Bonjour
Je travaille actuellement sur une base de données comportant 60 séries (en temporel). J'ai deux bases de données: chacune se rapportant à une variable A et B.
Voici un exemple reproductible de ma base (qui en réalité contient 60 noms et 51 années)
Variable A
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 annee nom1 nom2 om3 2002 39 56 31 2003 37 31 52 2004 51 58 51 2005 70 59 68 2006 41 43 37 2007 43 31 53
Variable B:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 annee nom1 nom2 nom3 2002 56 18 24 2003 72 52 59 2004 32 30 33 2005 33 34 51 2006 47 46 19 2007 19 32 25
J'aimerais faire une boucle qui créerait la matrice suivante pour chaque nom :
pour nom1
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 annee var1 var2 2002 39 56 2003 37 72 2004 51 32 2005 70 33 2006 41 47 2007 43 19
J'ai tout d'abord fait ceci (car je ne m’intéresse qu'aux individus représentés dans les deux bases de données)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 noms=as.matrix(intersect(colnames(df.var_A),colnames(df.var_B))) DF.VAR_A=subset(df.var_A,select=noms) DF.VAR_B=subset(df.var_B,select=noms)
J'aimerais ensuite récuperer la série correspondante à chaque nom, à la fois pour la variable A et la variable B:
Je récupère les années par:
Code : Sélectionner tout - Visualiser dans une fenêtre à part Année=DF.VAR_A[,"annee"]
J'obtiens bien :
J'aimerais maintenant créer un data frame pour chaque nom, comprenant l'année, les valeurs prises par la variable A et par la variable B.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 DF.VAR_A[,"nom1"] [1] 39 37 51 70 41 43
Je supprime "Année" du vecteur nom
Code : Sélectionner tout - Visualiser dans une fenêtre à part NAMES=noms[-c(1)]
Puis j'ai essayé
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 DATA=NULL for (i in 1:length(NAMES)){ DATA[i]=cbind(Année,DF.VAR_A[,i],DF.VAR_B[,i]) }
Mais le message d'erreur suivant apparait:
Messages d'avis :
1: In DATA[i] = cbind(Année, DF.VAR_A[, i], DF.VAR_B[, i]) :
le nombre d'objets à remplacer n'est pas multiple de la taille du remplacement
En fait l'idée serait de récuperer les 3 dataframes (un pour chaque nom), pour ensuite appliquer une boucle (déjà programmée) à chacun.
J'aimerais donc "automatiser" l'application d'une boucle à tous les individus (jusqu'à présent je remplaçais manuellement nom1 par nom2 etc..dans ma boucle suivante).
Voila je ne sais pas si c'est très clair, je reconnais que c'est un peu du bricolage...
Merci d 'avance pour votre aide !
Partager