2017-09-29 10 views
0

私は2006年のデータを1つのデータフレームにコピーしました。 2013年のデータを別のデータフレームにコピーしました。 CaseIDは、両方のデータフレームの主キーです。これら2つのデータフレームをどのように比較すれば、両方のデータフレームに存在するcaseIDを見つけることができますか。2つのデータフレームの列を比較して、あるデータフレームの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

は、一般的なケースにIDのを見つけるために、 'intersect'を使用し

df$CASEID 

オプション2 、 'intersect(d1 $ column_name、d2 $ column_name)' –

答えて

0

はオプション1:

あなたはmerge

df <- merge(dat2013, dat2006, by="CASEID") 
を使用することができますが

dfは、CASEIDのマージされたデータフレームであり、dat2013dat2006の両方に存在します。

あなたが両方に存在するCASEIDを返すようにしたい場合は、次のオプション3

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

intersect(dat2013$CASEID, dat2006$CASEID) 
関連する問題