R 根据组的第一个值删除行

R 根据组的第一个值删除行,r,R,我有以下数据: group health result 1 a H 7 2 a H 8 3 a N 9 4 b H 10 5 b H 5 6 b H 4 7 c H 3 8 c H 2 9 c N 1 我希望将数据分组,并且仅当每个组中的第一个结果小于7时才删除整个组 结果

我有以下数据:

  group health   result
1     a      H    7
2     a      H    8
3     a      N    9
4     b      H    10
5     b      H    5
6     b      H    4
7     c      H    3
8     c      H    2
9     c      N    1
我希望将数据分组,并且仅当每个组中的第一个结果小于7时才删除整个组

结果如下:

  group health   result
1     a      H    7
2     a      H    8
3     a      N    9
4     b      H    10
5     b      H    5
6     b      H    4

我们可以使用
data.table

library(data.table)
setDT(df1)[, if(result[1] >=7 ) .SD, group]

或者使用
dplyr

library(dplyr)
df1 %>% 
   group_by(group) %>%
   filter(first(result) >=7)
#   group health result
#  <chr>  <chr>  <int>
#1     a      H      7
#2     a      H      8
#3     a      N      9
#4     b      H     10
#5     b      H      5
#6     b      H      4

或使用聚合:

a <- aggregate(df$result ~ df$group,df,head,1) # take the first row of each group
df[df$group %in% a[a[,2] >= 7,][,1],]

  # group health result
# 1     a      H      7
# 2     a      H      8
# 3     a      N      9
# 4     b      H     10
# 5     b      H      5
# 6     b      H      4
a=7,][,1],]
#团体健康结果
#1 a H 7
#2 a H 8
#3 a N 9
#4 b H 10
#5bh5
#6bh4
a <- aggregate(df$result ~ df$group,df,head,1) # take the first row of each group
df[df$group %in% a[a[,2] >= 7,][,1],]

  # group health result
# 1     a      H      7
# 2     a      H      8
# 3     a      N      9
# 4     b      H     10
# 5     b      H      5
# 6     b      H      4