2010-11-05 16 views
38

J'essaie de trouver une fonction pour transformer un entier en une chaîne afin que je puisse l'utiliser pour initier un objet Date.Conversion d'entier en chaîne dans R

> v = c(20081101) 
> date <- as.Date(v, format("%Y%m%d")) 

Erreur dans charToDate (x): chaîne de caractères ne sont pas dans une norme claire et sans équivoque

J'ai trouvé une solution avec paste(), mais je voudrais savoir quelle est la bonne façon faire la conversion.

> date <- as.Date(paste(v), format("%Y%m%d")) 
> date 
[1] "2008-11-01" 

Répondre

42

as.character() serait la manière générale plutôt que d'utiliser paste() pour ses effets secondaires

> v <- 20081101 
> date <- as.Date(as.character(v), format = "%Y%m%d") 
> date 
[1] "2008-11-01" 

(je suppose que c'est un exemple simple et quelque chose comme ceci:

v <- "20081101"

n'est pas possible?)

+1

@DavidArenburg Je pense avoir une faute de frappe que je ne me suis jamais, pas une seule fois, utilisé 'as.Date' la façon dont je montre ci-dessus. –

14

Une autre façon d'obtenir le même résultat:

date <- strptime(v,format="%Y%m%d") 
+3

intéressant. Je ne savais pas que 'strptime' contraindrait/manipulerait automatiquement les valeurs numériques ... –