Dans l'idée d'analyser une série temporelle, je souhaite travailler avec des dates.
Je dispose d'un dataframe contenant, entre autres, des biomasses et des dates, quelque chose qui ressemble à ça :
Code : Tout sélectionner
# Creation d'un data frame
data<-data.frame(Dates=c("01/01/2017","01/01/2017","01/01/2017","01/01/2017","01/02/2017","01/02/2017","01/02/2017","01/02/2017","01/03/2017","01/03/2017","01/03/2017","01/03/2017","01/04/2017","01/04/2017","01/04/2017","01/04/2017"), valeurs=c(7,5,6,4,1,5,6,7,9,6,8,3,1,4,5,9))
dates<-data$Dates
valeurs<-data$valeurs
La classe de la colonne "dates" est bien sûr "facteur". Je souhaiterais convertir cette classe en "Date". J'arrive alors à mon problème : dans l'aide de la fonction as.Date(), il n'y a pas d'indication sur la manière de procéder à partir d'un facteur, seulement de numérique, chaines de caractères ou POSIXlt. J'ai lu ailleurs que la solution serait de faire :
Code : Tout sélectionner
dates<-as.character(dates)
dates<-as.Date(dates, "%d/%m/%y")
Et c'est ici que je bloque. Dans l'exemple que je vous mets ici, cela fonctionne parfaitement. Sur mes données réelles, la fonction conserve le bon mois, le bon jour... Mais change l'année, passant de 2017 à 2020 !
J'ai beau retourner le soucis dans tout les sens, je n'arrive pas à comprendre la différence qu'il pourrait y avoir entre cet exemple reproductible et mes vraies données, qui se présentent sous la forme :
Code : Tout sélectionner
Essai Modalite Repetition numero_plante date SdT semaine NbF MF MS pc_MS
25 2017 0R R1 1 30/03/2017 331 P4 16.0 56.2 3.6 6.4
26 2017 0R R1 2 30/03/2017 331 P4 16.0 61.9 3.9 6.2
27 2017 0R R1 3 30/03/2017 331 P4 17.0 64.4 4.0 6.3
28 2017 0R R1 4 30/03/2017 331 P4 16.0 69.0 4.2 6.1
29 2017 0R R1 5 30/03/2017 331 P4 17.0 60.6 4.0 6.5
Et qui est bien de classe "data.frame", et la colonne "date" est bien de classe "factors".
Quelqu'un aurait il une piste ? Je n'ai peut être pas bien compris l'aide de la fonction as.Date, mais le fait que cela marche sur l'exemple mais pas sur mes données, je n'arrive pas à l'expliquer.
Bien cordialement et merci d'avance ! :)
Jocelyn