2017-09-29 3 views
0

J'ai copié les données de l'année 2006 dans une trame de données. J'ai copié les données de l'année 2013 dans une autre base de données. CaseID est la clé primaire pour les deux cadres de données. Comment puis-je comparer ces deux trames de données afin que je puisse trouver les ID de cas qui existent dans les deux trames de données.Je souhaite comparer des colonnes de deux trames de données pour identifier si un cas de figure d'une trame de données existe dans une autre trame de données

Exemple:

d1 
123 
234 
254 

d2 
236 
256 
123 

output must be: 
123 

J'utilise le code suivant et je crois que son pire méthode:

for(i in 1:(nrow(AllYearsCaseIDs))){ 
    for (j in 1:(nrow(AllYearsCaseIDs))){ 
    if(is.na((AllYearsCaseIDs[i, "dat2013.CASEID"]))) 
     break 

     if(is.na((AllYearsCaseIDs[j, "dat2006.CASEID"]))) 
     break 

     if((AllYearsCaseIDs[i, "dat2013.CASEID"]) == (AllYearsCaseIDs[j, "dat2006.CASEID"])){ 
     output[i, 1 ] <- as.matrix(AllYearsCaseIDs[i, "dat2013.CASEID"]) 
     break 
     } 
    } 
} 
+0

Utiliser 'intersect' pour trouver commune ID de cas de , 'intersect (d1 $ nom_colonne, d2 $ nom_colonne)' –

Répondre

0

Option 1:

Vous pouvez utiliser merge

df <- merge(dat2013, dat2006, by="CASEID") 

df est votre cadre de données fusionné avec CASEID existe à la fois dans dat2013 et .

Si vous voulez revenir CASEID qui existe dans les deux:

df$CASEID 

Option 2:

dat2013$CASEID[dat2013$CASEID %in% dat2006$CASEID] 

Option 3:

intersect(dat2013$CASEID, dat2006$CASEID)