【发布时间】:2021-06-23 10:07:13
【问题描述】:
我有两个数据框:
x <- data.frame(A1 = c(1,1,1,1,2,2,2,2), A2 = c(1,1,2,2,1,1,2,2), value = 1:8)
y <- data.frame(A1 = 2, A2 = 2)
x
y
我需要从 x 中选择在 y 中指定的 A1 和 A2 值的行(在本例中为第 7 行和第 8 行)。
但是,我事先不知道我会有多少以“A”开头的列。它可能只是一个(A1)或几个(A1、A2、A3 等) 重要提示:x 和 y 始终具有以“A”开头的相同列,而 y 始终只有一行。
我可以使用循环得到我想要的:
out <- x
y_columns <- names(y)
for(i in y_columns) out <- out[out[[i]] == y[[i]],]
out
有没有更优雅的方式来实现我的目标?
非常感谢!
【问题讨论】:
-
merge(x, y)使用与 A1 和 A2 的键合并,所以基本上它们匹配的任何列都会产生相应的行,我希望我能理解你 -
谢谢!当然!!
-
你能把它作为答案吗?我会接受的。