R 当组中存在某些观察结果时,移除整个组
我有一个这样的数据集R 当组中存在某些观察结果时,移除整个组,r,dataset,R,Dataset,我有一个这样的数据集 df <- data.frame(group = c(rep(1,3),rep(2,2), rep(3,2),rep(4,3),rep(5, 2)), score = c(0, 10, 22, 44, 6, 5, 20, 1, 2, 0, 1,5)) group score 1 1 0 2 1 10 3 1 22 4 2 44 5 2 6 6 3 5 7
df <- data.frame(group = c(rep(1,3),rep(2,2), rep(3,2),rep(4,3),rep(5, 2)), score = c(0, 10, 22, 44, 6, 5, 20, 1, 2, 0, 1,5))
group score
1 1 0
2 1 10
3 1 22
4 2 44
5 2 6
6 3 5
7 3 20
8 4 1
9 4 2
10 4 0
11 5 1
12 5 5
有没有一个好的方法来实现这一点 您可以使用
df
行上的过滤器来完成此操作:
df[!df$group %in% unique(df$group[df$score %in% c(0, 1)]),]
# group score
# 4 2 44
# 5 2 6
# 6 3 5
# 7 3 20
过滤器使用%中的
%来检查每行的组是否在与分数为0或1相关联的组集中,从而删除所有此类行。Nice<代码>数据。表格
有趣的变体:df[,如果(!有(在%c(0,1)中分数为%).SD,by=group]
成功了,谢谢@josilber
df[!df$group %in% unique(df$group[df$score %in% c(0, 1)]),]
# group score
# 4 2 44
# 5 2 6
# 6 3 5
# 7 3 20