superponer - Conversión de unidades en R
superponer graficas en r (5)
Me gustaría convertir unidades imperiales en métricas y viceversa en R. ¿Cómo puedo hacer eso?
Si no hay una forma actual de hacerlo, ¿cómo puedo crear un paquete que lo haga?
El paquete udunits2
hace justamente eso. Envuelve la poderosa biblioteca UDUNITS :
udunits2::ud.convert(1, "mi", "km")
## [1] 1.609344
Además de eso, el paquete de units
(trabajo en progreso) tiene como objetivo proporcionar un sistema de tipo seguro para hacer aritmética con unidades:
with(ud_units, 1 * mi + 2 * km)
## 2.242742 mi
with(ud_units, 100 * km / (2 * h))
## 50 km/h
with(ud_units, 1 * mi + 2 * lb)
## Error: cannot convert lb into mi
Existen las funciones unit()
y convertUnit()
en el paquete grid para especificar diferentes unidades de longitud y dimensión. Eso puede hacer lo que quiera, o darle un lugar para comenzar si no.
Hay un "nuevo" paquete de R llamado unidades de hoy, que fue construido sobre el paquete R de udunits2 , que está disponible hace un tiempo.
Eche un vistazo a: https://cran.r-project.org/web/packages/units/vignettes/units.html#setting-units-unit-conversion
library(units)
(spd1 = 1:5 * with(ud_units, m/s))
##Units: m/s
##[1] 1 2 3 4 5
(spd2 = 1:5 * with(ud_units, km/h))
#Units: km/h
#[1] 1 2 3 4 5
spd1 + spd2 # automatic conversion
#Units: m/s
#[1] 1.277778 2.555556 3.833333 5.111111 6.388889
spd1 * spd2 # unit derivation
#Units: km*m/h/s
#[1] 1 4 9 16 25
spd1 * 10 * with(ud_units, s) # unit simplification
#Units: m
#[1] 10 20 30 40 50
spd1 + 10 * with(ud_units, s) # error checking
#Error in `units<-.units`(`*tmp*`, value = list(numerator = "m", denominator = "s")) :
cannot convert s into m/s
La naturaleza de las unidades puede afectar la presencia o la ausencia. En general, creo que, desafortunadamente, @gsk3 es correcto. Hay algunas funciones en los paquetes ''Hmisc'', ''gdata'' y ''marelac'':
Establecer un atributo de unidades (para más que solo objetos de tiempo): http://finzi.psych.upenn.edu/R/library/Hmisc/html/units.html
Médico: http://finzi.psych.upenn.edu/R/library/gdata/html/ConvertMedUnits.html
Índice ''marelac'' (principalmente especializado en oceanografía) http://finzi.psych.upenn.edu/R/library/marelac/html/00Index.html
Temperatura: http://finzi.psych.upenn.edu/R/library/marelac/html/convert_T.html
Barométrico: http://finzi.psych.upenn.edu/R/library/marelac/html/convert_p.html
El paquete "dieléctrico" fue mencionado por @Brian Diggs en una respuesta a una pregunta similar: Enlace a la página de ayuda de ''constantes'' en el paquete ''dieléctrico''
Creo que esos proporcionarán ejemplos de cómo hacerlo y la función package.skeleton
debería ayudar con la mecánica de la creación de paquetes. Creo que el paquete sería una adición bienvenida.
Actualización: El paquete ''udunits2'' fue mencionado por Gabor Grothendieck en una pregunta similar a rhelp el 23 de julio de 2012. Parece requerir la instalación de un paquete independiente del sistema operativo con el mismo nombre. Sin dicha instalación, se obtiene un mensaje de error bastante inútil:
> ud.convert(1, "miles", "km")
Error in ud.convert(x, "miles", "km") :
Units miles and km are not convertible
Sé que esto es muy tarde, pero las medidas del paquete tienen una función conv_unit()
que puede ser lo que estás buscando. Usted ingresa el valor imperial que tiene, de qué unidad está convirtiendo (por ejemplo, ''pies'') y a qué desea convertir (por ejemplo, ''km''). Tiene una variedad de diferentes dimensiones (no solo longitud).