我已将2006年的数据复制到一个数据框中。我已将2013年的数据复制到另一个数据框中。 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 :(得分:0)
选项1:
您可以使用merge
df <- merge(dat2013, dat2006, by="CASEID")
df
是CASEID
和dat2013
中存在dat2006
的合并数据框。
如果您想要返回两者中都存在的CASEID
:
df$CASEID
选项2:
dat2013$CASEID[dat2013$CASEID %in% dat2006$CASEID]
选项3:
intersect(dat2013$CASEID, dat2006$CASEID)