Bonjour,

J'ai un data frame qui est composé de 5000 observations et 15 variables qui se présente comme ceci :


PAYS YEAR GROUP Var1 Var 2 .......
FRA 1993 1 70 45
FRA 1998 1 75 35
FRA 2003 2 30 50
FRA 2008 2 40 60
BEL 1993 1 90 20
BEL 1998 1 100 90
BEL 1993 2 80 30
BEL 1998 2 40 40

La variables year correspond aux années de relevés qui sont de période 5.
Je souhaite que pour i allant de 1 à 5000, si (PAYS[i]=PAYS[i+1] & YEAR[i]+5=YEAR[i+1] & GROUP[i]=GROUP[i+1]) Alors on crée le data_frame suivant :

PAYS YEAR1 YEAR2 GROUP Var1.1 Var1.2 Var 2.1 Var2.2
FRA 1993 1998 170 70 45 35
FRA 2003 2008 2 30 40 50 60
BEL 1993 1998 1 90 100 20 90
BEL 1993 1998 2 80 40 30 40

Pour l'instant, j'ai essayé ça :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
i <- 1
j <- 1
for (i in 1:nrow(data_f)){
  if (data_f$contcod[i]==data_f$contcod[i+1] & 
      data_f$group[i]==data_f$group[i+1] & 
      data_f$bin_year[i]+5==data_f$bin_year[i+1]){
    DATA_FINAL$contcod[j] = data_f$contcod[i] 
    DATA_FINAL$group[j] = data_f$group[i] 
    DATA_FINAL$region[j] = data_f$region[i] 
    DATA_FINAL$annee1[j] = data_f$bin_year[i] 
    DATA_FINAL$annee2[j] = data_f$bin_year[i+1]
    j <- j+1 
    i <- i+1
  } else {
      i<- i+1
      DATA_FINAL$contcod[j] = data_f$contcod[i] 
      DATA_FINAL$group[j] = data_f$group[i] 
      DATA_FINAL$region[j] = data_f$region[i] 
      DATA_FINAL$annee1[j] = data_f$bin_year[i] 
      DATA_FINAL$annee2[j] = data_f$bin_year[i+1]
      j <- j+1
    }
}
Mais je reçois le warning suivant :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
In `[<-.data.table`(x, j = name, value = value) :
  Supplied 8 items to be assigned to 1 items of column 'annee1' (7 unused)
Est-ce que quelqu'un aurait une idée de la manière comment procéder?
Merci à vous!