1

假设我有一个这样的数据框:

df <- data.frame(id = rep(c(1001:1004), each = 3), value = c(1,1,4,1,2,3,2,2,5,1,5,6))

df
     id value
1  1001     1
2  1001     1
3  1001     4
4  1002     1
5  1002     2
6  1002     3
7  1003     2
8  1003     2
9  1003     5
10 1004     1
11 1004     5
12 1004     6

什么是返回值等于1但的 ID 的好方法3,即,任何具有相应值等于的 ID3将被排除,但必须至少有一个值等于1?在这种情况下,ID 10021但也有3并且应该被排除。ID 1003没有任何值等于1并且也应被排除在外。所以ID 1001 and 1004会被退回。谢谢!

4

2 回答 2

3

您可以获得包含 1df$id[df$value == 1]和 3的 ID df$id[df$value == 3]。要从另一组中排除一组,您可以使用setdiff.

在一个命令中:with(df,setdiff(id[value == 1],id[value == 3]))

于 2012-08-29T16:18:48.170 回答
0

这是另一种选择。

unique(df$id[df$value==1][! df$id[df$value==1] %in% df$id[df$value==3]])
[1] 1001 1004
于 2016-06-30T03:52:57.703 回答