Le message d'erreur que vous avez affichée indique que votre colonne Date.Trans
est de type numérique. S'il s'agissait d'un caractère ou d'un type de facteur, l'appel as.Date()
fonctionnerait. Pour un type numérique, vous pouvez obtenir l'exigence en contraignant à caractère premier:
boo <- data.frame(Date.Trans=c(20150623,20150613,20150616,20150611,20150625));
as.Date(boo$Date.Trans,'%Y%m%d');
## Error in charToDate(x) :
## character string is not in a standard unambiguous format
boo$days <- as.Date('2015-07-07') - as.Date(as.character(boo$Date.Trans),'%Y%m%d');
boo;
## Date.Trans days
## 1 20150623 14 days
## 2 20150613 24 days
## 3 20150616 21 days
## 4 20150611 26 days
## 5 20150625 12 days
sapply(boo,class);
## Date.Trans days
## "numeric" "difftime"
En général, vous devriez essayer de contraindre à des types de données appropriés à partir le plus tôt possible; cela aidera à prévenir ce genre de difficultés. Par exemple, si la définition boo
en ligne, vous pouvez le faire:
boo <- data.frame(Date.Trans=as.Date(c('2015-06-23','2015-06-13','2015-06-16','2015-06-11','2015-06-25')));
boo;
## Date.Trans
## 1 2015-06-23
## 2 2015-06-13
## 3 2015-06-16
## 4 2015-06-11
## 5 2015-06-25
class(boo$Date.Trans);
## [1] "Date"
Ou, s'il est trop tard, par exemple, si vous lisez dans les données d'un fichier, vous pouvez le corriger après:
boo$Date.Trans <- as.Date(as.character(boo$Date.Trans),'%Y%m%d');
boo;
## Date.Trans
## 1 2015-06-23
## 2 2015-06-13
## 3 2015-06-16
## 4 2015-06-11
## 5 2015-06-25
class(boo$Date.Trans);
## [1] "Date"
Essayez 'as.Date (as.character (boo $ Date.Trans),"% Y% m% d ")' – akrun
Vous avez juste besoin d'un Y majuscule "% Y" dans votre premier essai. – JohannesNE