Je suis relativement nouveau à R, mais c'est la première fois que j'ai affaire à des conversions de date. J'ai lu dans mes données d'un CSV (en utilisant read.table()), mais j'ai court-circuité les données pour mettre en évidence mon problème. Lorsqu'il est lu dans R, le champ Date est un caractère.Convertir un caractère en Date dans R
Simplement, la plupart de mes dates sont coercées correctement, sauf dans quelques cas. L'exemple ci-dessous vous montrera, espérons-le, ce qui se passe.
# my attempt to coerce the date -- uses the stringr package
prods.all$Date2 <- as.Date(str_sub(prods.all$Date, 1,
str_locate(prods.all$Date, " ")[1]-1),
"%m/%d/%Y")
# grab two rows to highlight my issue
temp <- prods.all[c(1925:1926), c(1,8)]
> temp
Date Date2
1925 10/9/2009 0:00:00 2009-10-09
1926 10/15/2009 0:00:00 0200-10-15
Comme vous pouvez le voir, l'année de certaines des dates est inexacte. Le modèle semble se produire lorsque le jour est à deux chiffres. J'ai regardé quelques livres et j'ai essayé Google d'une meilleure façon, mais tout semble indiquer que mes données ne sont pas formatées correctement en entrée. Étant donné la puissance de R, je me rends compte qu'il est très facile de forcer la colonne à être valide et que je néglige une solution évidente.
Toute aide que vous pouvez fournir sera grandement appréciée.
La raison pour laquelle vous obtenez l'invalide 0200 date est que les longueurs de caractères de la journée sont différentes (deux chiffres pour 15 oct, un chiffre pour 9 oct) - et votre code de substitution de chaîne ne tient pas compte de cela. En tout cas, vous pouvez probablement utiliser as.Date ou strptime directement avec l'agument de format, sans traiter les caractères plus loin. – mdsumner