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 :Mais je reçois le warning suivant :
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 } }Est-ce que quelqu'un aurait une idée de la manière comment procéder?
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)
Merci à vous!
Partager