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 :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 DF.VAR_A[,"nom1"] 
[1] 39 37 51 70 41 43
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.

Je supprime "Année" du vecteur nom

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 !