Bonjour,
une solution possible qui rejoint l'idée de Eric de passer par un format de date R.
C'est un peu tordu car les abréviations des mois du data frame d'origine ne sont pas "standard"
Code : Tout sélectionner
modif_date<-data.frame(num=1:12,
mois_perso=c("","","","avr","","jun","","aou","","","","dec") #on crée un data.frame pour convertir les noms de mois dans qq chose de compréhensible pour R
#on transforme le champ date en date R
#puis on transforme ces dates en factor
df$ordre<-as.integer(as.factor(as.POSIXct(paste(substr(df$date,1,2),modif_date$num[match(substring(df$date,4),modif_date$mois_perso)],"2004"),format="%d %m %Y")))
> df
annee date mois ordre
1 2005 01 avr avril 1
2 2005 01 dec déc. 4
3 2005 01 aou août 3
4 2005 01 jun juin 2
5 2006 01 avr avril 1
6 2006 01 dec déc. 4
7 2006 01 aou août 3
8 2006 01 jun juin 2
9 2007 01 avr avril 1
10 2007 01 dec déc. 4
11 2007 01 aou août 3
12 2007 01 jun juin 2
13 2008 01 avr avril 1
14 2008 01 dec déc. 4
15 2008 01 aou août 3
16 2008 01 jun juin 2
Serge
EDIT : Le data frame modif_date n'est pas indispensable, il suffit d'avoir un vecteur
mois_perso=c("avr","jun","aou","dec") la commande devient alors
Code : Tout sélectionner
df$ordre<-as.integer(as.factor(as.POSIXct(paste(substr(df$date,1,2),match(substring(df$date,4),mois_perso),"2004"),format="%d %m %Y")))
un chouia plus simple