【发布时间】:2019-03-27 17:57:25
【问题描述】:
我发现了很多类似的问题(1、2、3 是其中的一些),但没有一个回答我的问题:
我有这些数据:
set.seed(100)
df <- data.frame(X = sample(1:10, 100, replace=TRUE),
Y = sample(11:90, 100, replace=TRUE),
Z = sample(1000:2000, 100, replace=TRUE),
stringsAsFactors = FALSE)
x <- data.frame(X = c(7, 5, 3, 9),
Y = c(14, 13, 19, 87),
stringsAsFactors = FALSE)
其中x 是df 的子集,具有特定的分组和计算。现在,我正在尝试通过x 两个列过滤df。例如,对于df 中的特定行,它必须是X=7 和Y=14 才能成为TRUE,或者X=5 和Y=13 才能成为TRUE,它必须是FALSE如果X=7 和Y<>14,等等。因此,标准必须同时考虑两列。我试过这个:
> df[df$X == x$X & df$Y == x$Y,]
X Y Z
28 9 87 1071
当我知道它必须至少为 4 时,这给了我一个真正的价值(因为 x 是 df 的子集)
这就是我正在寻找的东西(它给了我 0 行):
df[df[,c("X","Y")] %in% x[,c("X","Y")],]
预期输出:
X Y Z
16 7 14 1632
28 9 87 1071
30 3 19 1297
38 7 14 1701
67 5 13 1323
77 9 87 1484
88 3 19 1951
【问题讨论】:
-
能否显示预期的输出
-
@camille 行索引 16 和 38。
-
@akrun 我已经添加了预期的输出
-
好的,那么输出似乎与我下面的解决方案匹配
标签: r dplyr data-manipulation