Я нашел много похожих вопросов ( 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
с определенной группировкой и вычислениями. А теперь я пытаюсь отфильтровать df
по обоим x
столбцам. Например, для конкретной строки в 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