我有一个数据集如下:
col1 col2
1 26
1 43
1 34
2 54
2 27
3 15
4 1
4 4
我想只选择col2大于25的那些组,因此生成的数据集应为
col1 col2
1 26
1 43
1 34
2 54
2 27
这是一个示例数据集,而不是真实的东西,而不是一个简单的子集答案,我真的在寻找一个dplyr答案:
Nr<-Mrd %>%
group_by(col1) %>%
slice(which.min(col2>25))
然而,这个答案会让我得到每组中> 25的行,而不是那些最小值为> 25的组。
答案 0 :(得分:3)
按照您的想法,您不需要which.min
,但min
和filter
代替slice
df %>%
group_by(col1) %>%
filter(min(col2) > 25)
#Source: local data frame [5 x 2]
#Groups: col1 [2]
# col1 col2
# <int> <int>
#1 1 26
#2 1 43
#3 1 34
#4 2 54
#5 2 27
答案 1 :(得分:2)
我们可以使用data.table
library(data.table)
setDT(df)[, if(min(col2) > 25) .SD, by = col1]
# col1 col2
#1: 1 26
#2: 1 43
#3: 1 34
#4: 2 54
#5: 2 27
或使用ave
base R
df[with(df, ave(col2>25, col1, FUN = all)),]
# col1 col2
#1 1 26
#2 1 43
#3 1 34
#4 2 54
#5 2 27