我想知道我的数据中哪些组没有值“N”。
我的数据如下:
group value
A Y
A Y
A Y
B Y
B N
B N
C Y
C Y
C N
D Y
D Y
D Y
我想要的输出如下:
group
A
D
先谢谢你!
答案 0 :(得分:2)
我们可以只用subset
和 %in%
来创建一个逻辑向量,在出现'N'时返回TRUE,获得相应的'组',创建另一个带有组的逻辑向量并否定({{1 }}) 以便只返回没有 'N' 的组
!
或者使用 unique( subset(df1, !group %in% group[value %in% 'N'], select = group))
# group
#1 A
#10 D
dplyr
df1 %>%
distinct %>%
filter(!group %in% group[value %in% 'N']) %>%
select(group)
答案 1 :(得分:2)
使用 subset
的 ave
的另一个基本 R 版本
> unique(subset(df, !ave(value == "N", group, FUN = any), select = group))
group
1 A
10 D
或 subset
+ aggregate
> subset(aggregate(. ~ group, df, FUN = function(x) any(x == "N")), !value, select = group)
group
1 A
4 D
或 tapply
+ Filter
> with(df, Filter(isTRUE, tapply(value == "N", group, Negate(any))))
A D
TRUE TRUE
或unstack
+ colSums
+ Filter
> Filter(isTRUE, colSums(unstack(rev(df)) == "N") == 0)
A D
TRUE TRUE
答案 2 :(得分:2)
另一个基础 R:
names(which(table(df)[,"N"] == 0))
[1] "A" "D"