2017-09-29 63 views
0

我已將2006年的數據複製到一個數據幀中。我已將2013年的數據複製到另一個數據框中。 CaseID是兩個數據框的主鍵。如何比較這兩個數據幀,以便我可以找出這兩個數據幀中存在的caseID。我想比較兩個數據幀的列,以確定是否存在另一個數據幀中的一個數據幀的caseid

例子:

d1 
123 
234 
254 

d2 
236 
256 
123 

output must be: 
123 

我使用下面的代碼,我相信它的最糟糕的方法:

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

使用'intersect'找到共同的案例ID的,'intersect(d1 $ column_name,d2 $ column_name)' –

回答

0

選項1:

您可以使用merge

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

dfdat2013dat2006中存在的合併數據幀CASEID

如果你想返回CASEID存在於兩種:

df$CASEID 

選項2:

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

方案3:

intersect(dat2013$CASEID, dat2006$CASEID) 
相關問題