[RESOLU]fonction as.Date : changement d'année involontaire

Postez ici vos questions, réponses, commentaires ou suggestions - Les sujets seront ultérieurement répartis dans les archives par les modérateurs

Modérateur : Groupe des modérateurs

Jocelyn Carré
Messages : 25
Enregistré le : 13 Juin 2016, 12:54

[RESOLU]fonction as.Date : changement d'année involontaire

Messagepar Jocelyn Carré » 15 Juin 2017, 10:05

Bonjour à tous !
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

Serge Rapenne
Messages : 1426
Enregistré le : 20 Aoû 2007, 15:17
Contact :

Re: fonction as.Date : changement d'année involontaire

Messagepar Serge Rapenne » 15 Juin 2017, 10:29

Bonjour,

l'année sur 4 caractères est indiqué par %Y et non %y.

si le pb n'est pas là, met sur le forum un extrait de tes vrais données grâce à la fonction dput.
par ex qq chose comme

Code : Tout sélectionner

dput(mes_donnee[1:10,])
si le défaut apparait dans l'une des 10 1ere lignes.

Serge

Jocelyn Carré
Messages : 25
Enregistré le : 13 Juin 2016, 12:54

Re: fonction as.Date : changement d'année involontaire

Messagepar Jocelyn Carré » 15 Juin 2017, 12:14

Re bonjour,
Formidable ! Merci beaucoup, ça a marché !


Retourner vers « Questions en cours »

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 1 invité