识别没有兴趣值的组

时间:2021-05-11 22:56:18

标签: r

我想知道我的数据中哪些组没有值“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

先谢谢你!

3 个答案:

答案 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)

使用 subsetave 的另一个基本 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"
相关问题