用于在R中的两个以上数据帧之间查找公共行

时间:2013-06-28 08:45:21

标签: r dataframe rows

我有4个数据帧,并且希望找到在任何其他数据帧中不存在某个列中的值的行。我写了这个函数:

#function to test presence of $Name in 3 other datasets
common <- function(a, b, c, d) {
  is.B <- is.numeric(a$Name %in% b$Name) == 1
  is.C <- is.numeric(a$Name %in% c$Name) == 1
  is.D <- is.numeric(a$Name %in% d$Name) == 1
  t <- as.numeric(is.B & is.C & is.D)
  t
}

但是,输出总是t = 0.这意味着它告诉我任何数据集中都没有唯一的行,即使数据帧的行数非常不同。由于任何数据框中都没有重复的行,因此对于最大数据集中的至少某些行,我应该得到t = 1。有人能弄明白我错了吗?

1 个答案:

答案 0 :(得分:1)

改写为:

common <- function(a, b, c, d)
{
    Name <- a$Name
    inB <- Name %in% b$Name
    inC <- Name %in% c$Name
    inD <- Name %in% d$Name
    which(!(inB | inC | inD))
}