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