2
votes

Comment ajouter un - à une date dans r?

J'ai des dates dans mon ensemble de données qui sont formatées de la manière suivante:

"4252001" "5092001" "4242001" "5092001" "5192001" "6292001" "10242001"

Je veux ajouter un tiret (-) entre eux, pour qu'ils ressemblent à ceci:

"4-25-2001" "5-09-2001" "4-24-2001" "5-09-2001" "5-19-2001" "6-29-2001" "10-24- 2001 "

Ensuite, je veux les convertir en données de séries chronologiques dans r.

Pour la vie de moi, je ne peux pas comprendre comment ajouter le tiret à ces dates.

De plus, selon le mois, certaines dates comportent 7 ou 8 caractères. En essayant de comprendre comment les transformer en rendez-vous, c'était une considération importante que je voulais transmettre à tous ceux qui essaient d'aider.


0 commentaires

3 Réponses :


1
votes

Vous pouvez utiliser

as.Date(y, format = '%m-%d-%Y')

Ensuite pour convertir en date

x = c("4252001", "5092001", "4242001", "5092001", "5192001", "6292001", "10242001")    
y = sub('(\\d{2})(\\d{4})$', '-\\1-\\2', x)
##[1] "4-25-2001"  "5-09-2001"  "4-24-2001"  "5-09-2001"  "5-19-2001" 
##[6] "6-29-2001"  "10-24-2001"


1 commentaires

Ce qui m'a pris toute la journée, vous a pris quelques secondes! Je vous remercie beaucoup pour votre aide!



0
votes

il suffit de faire:

x = c("4252001", "5092001", "4242001", "5092001", "5192001", "6292001", "10242001") 

as.Date(sprintf('%08d',as.numeric(x)),'%m%d%Y')

[1] "2001-04-25" "2001-05-09" "2001-04-24" "2001-05-09" "2001-05-19" "2001-06-29" "2001-10-24"


1 commentaires

Génial! C'est aussi très utile!



0
votes

en utilisant lubridate , c'est encore plus simple:

x = c("4252001", "5092001", "4242001", "5092001", "5192001", "6292001", "10242001")

library(lubridate)

mdy(as.numeric(x))

[1] "2001-04-25" "2001-05-09" "2001-04-24" "2001-05-09" "2001-05-19" "2001-06-29" "2001-10-24"


1 commentaires

Impressionnant! Je ne connaissais pas ce package! Je vous remercie!