Création BD avec boucle for et conditionnement
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:
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:
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!