2012-12-03 9 views
2

J'ai donc beaucoup de trames de données et j'essaie de les fusionner. Certains d'entre eux sont sous la forme:fusionner plusieurs trames de données dans R

sites1 AA1 SA 
1 13: C 0.360828 
2 14: S 0.017064 
3 15: I 0.010810 

D'autres sont:

sites2 AA2 Freq 
1 1: X 0.013 
2 1: S 0.987 
3 2: L 1.000 

J'ai une autre trame de données reliant la trame de données appropriée du premier jeu avec celui du deuxième set et il va comme ceci:

V1 V2 
1 1JH6 AT4G18930 
2 3MXZ AT2G30410 

avec le nom dans la partie gauche correspondant à une trame de données et le nom dans la partie droite correspondant à une autre trame de données. Je suis en train de les fusionner en faisant

for (i in 1:n){ 
    name = paste("1",names2[i,2]) 
    assign(name,merge(names2[i,1],names2[i,2])) 
} 

mais cela renvoie simplement une trame de données avec les deux noms .. Toute aide?

+4

pouvez-vous s'il vous plaît dput votre structure de données? http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example – agstudy

+0

Donc, je suis nouveau à ce sujet et je ne suis pas vraiment sûr de la façon dont la chose dput fonctionne, le fichier est assez gros, y a-t-il un moyen de le publier? – user1871524

+0

Il n'est pas clair comment la trame de données 'names2' relie la table 1 à la table 2. –

Répondre

1

essayez de remplacer la déclaration assign dans votre boucle avec les éléments suivants

 assign(name,merge(get(as.character(names2[i,1])), 
         get(as.character(names2[i,2])))) 

Aussi, pensez à fixer la déclaration name = paste.... comme suit:

name = paste("T1",names2[i,2], sep="") 
    # added sep="" to not have a space. 
    # changed the name so that does not start with a number 
+0

Cela semble avoir beaucoup aidé. Certains des nouveaux cadres de données créés à partir des fusions contiennent jusqu'à 160000 éléments lorsque les blocs de données d'avant atteignent un maximum de 1000 éléments. Encore si merci jusqu'à présent – user1871524

+0

J'ai donc utilisé le by.x et by.y (qui ne fonctionnaient pas auparavant, donc je me suis dit que je les abandonnerais entièrement) et maintenant tout semble bien fonctionner. Merci! – user1871524

+0

c'est probablement un problème avec l'appel spécifique à fusionner, et pas la boucle for. Je recommanderais de retracer quelques délinquants et d'enquêter sur ces tables spécifiques. Ensuite, essayez manuellement 'fusionner (...)' de ces tables (non pour la boucle). –

Questions connexes