从数据框中删除与另一个数据框R中的两列匹配的行

时间:2016-07-04 11:18:38

标签: r match which

我正在努力从R中的数据帧中删除行,其中来自不同列的值匹配来自第二个数据帧中不同列的两个值。

例如,给定以下伪数据:

Paint p = new Paint();
p.setColor(ContextCompat.getColor(this,android.R.color.holo_red_dark));
p.setflags(Paint.UNDERLINE_TEXT_FLAG);
textView.setPaintFlags(p.getFlags());

我想删除ID1 <- c(5,10,6) ID2 <- c(3,5,4) Value <- rnorm(3) DF1 <- data.frame(ID1, ID2, Value) x <- c() y <- c() z <- c() for (i in 1:10){ a <- rep(i, 10) b <- c(1:10) c <- rnorm(10) x <- c(x, a) y <- c(y, b) z <- c(z, c) } DF2 <- data.frame(x, y, z) DF2x的组合与yID1的{​​{1}}匹配的行(即ID2DF1x = 5 and y = 3,还有x = 10 and y = 5x = 6 and y = 4x = 3 and y = 5)。

感谢。

2 个答案:

答案 0 :(得分:3)

制作排除列表

excl <- data.frame(
  x = c(DF1$ID1, DF1$ID2),
  y = c(DF1$ID2, DF1$ID1))

然后使用反连接:

library(dplyr)
anti_join(DF2, excl, by = c("x", "y"))

或使用评论中建议的粘贴:

DF2[! paste(DF2$x, DF2$y) %in% 
      c(paste(DF1$ID1, DF1$ID2),
        paste(DF1$ID2, DF1$ID1)), ]

答案 1 :(得分:0)

使用@ {zx8754 exclmatch_df {/ 1}}函数的另一个选项

plyr