1

我正在使用 R 从数据框中提取一组行。许多行被反复拉动。使用两个标准选择行。不幸的是,结果产生了一组符合条件的唯一行。我会示范...

给定data.frame:

a = data.frame(array(c(1,2,3,1,4,5,6,2,7,8,9,4), c(4,3)))

看起来像:

  X1 X2 X3
1  1  4  7
2  2  5  8
3  3  6  9
4  1  2  4

假设我希望a使用由数组定义的两组标准来调用:

criteriaX1 = c(1,2,1,1,2)
criteriaX2 = c(4,5,4,2,5)

然后我会使用这个命令:

a[ a$X1 %in% criteriaX1 & a$X2 %in% criteriaX2, ]

希望得到 5 行这样的(查看@criteriaX1 的键,并阅读 X1。如果还没有的话应该是有意义的):

  X1 X2 X3
1  1  4  7
2  2  5  8
3  1  4  7
4  1  2  4
5  2  5  8

但相反,我得到了这个:

  X1 X2 X3
1  1  5  9

我猜它与%in%定义 Set Membership 有关,但我不确定如何在没有令人讨厌的循环的情况下解决这个问题。感谢所有帮助。

谢谢。

4

1 回答 1

4

您可以使用 data.table 等值连接:

library(data.table)
a <- data.table(a)
b <- data.table(X1 = criteriaX1, X2 = criteriaX2)

setkey(a, X1, X2)
a[b]
#    X1 X2 X3
# 1:  1  4  7
# 2:  2  5  8
# 3:  1  4  7
# 4:  1  4  7
# 5:  2  5  8
于 2013-08-30T02:02:46.767 回答