我正在努力从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)
中DF2
和x
的组合与y
和ID1
的{{1}}匹配的行(即ID2
,DF1
,x = 5 and y = 3
,还有x = 10 and y = 5
,x = 6 and y = 4
,x = 3 and y = 5
)。
感谢。
答案 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 excl
和match_df
{/ 1}}函数的另一个选项
plyr