我想比较两个数据帧的列,以确定来自一个数据帧的caseid是否存在于另一个数据帧中

时间:2017-09-29 05:12:47

标签: r comparison

我已将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
       }
  }
}

1 个答案:

答案 0 :(得分:0)

选项1:

您可以使用merge

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

dfCASEIDdat2013中存在dat2006的合并数据框。

如果您想要返回两者中都存在的CASEID

df$CASEID

选项2:

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

选项3:

intersect(dat2013$CASEID, dat2006$CASEID)