Conversion des unités en R
Je voudrais convertir des unités impériales en unités métriques et vice versa dans R. Comment puis-je faire cela?
S'il n'y a pas de moyen actuel de le faire, Comment puis-je créer un paquet qui le ferait?
5 réponses
Je sais que c'est très tard, mais le paquet measurements
a une fonction conv_unit()
qui peut être ce que vous cherchez. Vous entrez la valeur impériale que vous avez, quelle unité vous convertissez (par exemple 'ft') et ce que vous voulez convertir en (par exemple 'km'). Il a une variété de dimensions différentes (pas seulement la longueur).
La nature des unités peut affecter la présence ou l'absence. En général je pense, malheureusement, que @gsk3 est correct. Il y a une fonction dans les paquets 'Hmisc', 'gdata' et 'marelac':
Définition d'un attribut units (pour plus que des objets time): http://finzi.psych.upenn.edu/R/library/Hmisc/html/units.html
Services médicaux: http://finzi.psych.upenn.edu/R/library/gdata/html/ConvertMedUnits.html
Index' marelac ' (principalement spécialisé dans océanographie) http://finzi.psych.upenn.edu/R/library/marelac/html/00Index.html
Température: http://finzi.psych.upenn.edu/R/library/marelac/html/convert_T.html
Barométrique: http://finzi.psych.upenn.edu/R/library/marelac/html/convert_p.html
Le Paquet "dielectric" a été mentionné par @ Brian Diggs dans une réponse à une question similaire: lien vers la page d'aide' constantes 'du paquet' dielectric '
Je pense que ceux-ci fourniront des exemples de le faire et la fonction package.skeleton
devraient aider à la mécanique de la création de paquets. Je pense que le paquet serait un ajout bienvenu.
Update: le paquet' udunits2 ' a été mentionné par Gabor Grothendieck dans une question similaire à rhelp le 23 juillet 2012. Il semble nécessiter l'installation d'un package autonome spécifique au système d'exploitation du même nom. Sans une telle installation, vous obtenez un message d'erreur plutôt inutile:
> ud.convert(1, "miles", "km")
Error in ud.convert(x, "miles", "km") :
Units miles and km are not convertible
Il y a les fonctions unit()
et convertUnit()
dans le paquet grid pour spécifier différentes unités de longueur et de dimension. Cela peut faire ce que vous voulez, ou vous donner un endroit pour commencer sinon.
Le udunits2
le paquet fait exactement cela. Il enveloppe la puissante bibliothèque UDUNITS :
udunits2::ud.convert(1, "mi", "km")
## [1] 1.609344
En plus de cela, la units
paquet (travaux en cours), vise à fournir un système de sécurité pour faire de l'arithmétique avec les unités:
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
Il existe un "nouveau" paquet r appelé units aujourd'hui, qui a été construit sur le paquet udunits2 R, qui est disponible il y a quelque temps.
Jetez un oeil à: 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