2015-12-14 7 views
-7

J'ai la situation suivante, 2 gigantesques données X et Y (le numéro de référence est d'environ 13 millions par dataframe et les colonnes sont 11 pour chaque image) et je dois les fusionner d'une manière spécifique. L'exemple X de trame de données estComment mélanger des données dans R

A 1 2 3 
    B 3 2 4 
    C 1 6 8 

Le Y trame de données est

A 9 1 8 
    B 3 1 7 
    D 2 9 4 

je les mélanger avec la logique suivante: Si le premier élément de la rangée Y est présent en X puis i Je dois l'ajouter à la ligne Si le premier élément de la ligne dans Y n'est pas présent dans X alors je dois ajouter des zéros et ensuite ajouter les données Y Pour toutes les X lignes non présentes dans YJ'ajouter puis les zéros Le résultat du mix devrait être comme ceci:

A 1 2 3 9 1 8  I found A in Y and I appended 
    B 3 2 4 3 1 7  I found B in Y and I appended 
    C 1 6 8 0 0 0  I didn't found C in Y and added 0 
    D 0 0 0 2 9 4  I didn't found D in X and added 0 then appended C 

J'ai essayé de ligne par ligne mais il faut les âges et je besoin d'un seul coup ou double solution tir (double instruction) ...

Merci

+2

N'est-ce pas simplement 'fusionner (X, Y, all = TRUE, by =" V1 ")'? On dirait une dupe "fusion" habituelle –

Répondre

2

sans exemple reproductible je peux t tester cela, mais je pense que vous voulez:

library(dplyr) 
z<-full_join(x,y, by=FirstColumn) 
z[is.na(Z)]<-0 

cela suppose qu'il n'y a pas de NA dans les données d'origine.