我會用plyr
這一點。但是,第一次讀到您的數據:
dat = read.csv(textConnection("1 0
1 2
1 3
1 5
1 9
1 4
1 7
1 11
1 8
2 3
2 4
2 2
3 9
3 0
4 0
5 0
5 13
6 22
6 0"), header = FALSE, sep = "")
和裝載plyr後,我想找到V1
獨特的類別,其只有在V2
列的值等於neg
,導致列表:true_values
。
require(plyr)
neg = 0
test = ddply(dat, .(V1), summarise, bool = all(V2 == neg))
> test
V1 bool
1 1 FALSE
2 2 FALSE
3 3 FALSE
4 4 TRUE
5 5 FALSE
6 6 FALSE
true_values = test[["V1"]][test[["bool"]]]
> true_values
[1] 4
一旦我們有了這個列表中,我們可以子集原始數據集:
> dat[dat[["V1"]] %in% true_values,]
V1 V2
15 4 0
或者,我們可以生成一個布爾值向量直接指定從dat
選擇哪些元素:
test = ddply(dat, .(V1), mutate, bool = all(V2 == neg))
...並執行子集:
> dat[test[["bool"]],]
V1 V2
15 4 0
當NEG有多個值 – user1723765
這也是沒有在你的問題中指定這不起作用。如果您需要更具體的答案,請添加更多詳細信息。 –
以及NEG可以是一個矢量說NEG = 0,1,3,5,7然後我想測試負 – user1723765