题使用dplyr,如何在一个语句中选择分组数据的顶部和底部观察/行?数据与示例给定数据框df <- data.frame(id=c(1,1,1,2,2,2,3,3,3), stopId=c("a","b","c","a","b","c","a","b","c"), stopSequence=c(1,2,3,3,1,4,3,1,2))我可以使用slice,但使用两个单独的陈述来获得每个组的最高和最低观察值:firstStop <- df %>% group_by(id) %>% arrange(stopSequence) %>% slice(1) %>% ungrouplastStop <- df %>% group_by(id) %>% arrange(stopSequence) %>% slice(n()) %>% ungroup我可以将这两个statmenets合并成一个选择两个顶部和底部的意见?
3 回答
慕沐林林
TA贡献2016条经验 获得超9个赞
可能有一种更快的方法:
df %>%
group_by(id) %>%
arrange(stopSequence) %>%
filter(row_number()==1 | row_number()==n())
忽然笑
TA贡献1806条经验 获得超5个赞
仅出于完整性考虑:您可以传递slice索引向量:
df %>% arrange(stopSequence) %>% group_by(id) %>% slice(c(1,n()))
这使
id stopId stopSequence
1 1 a 1
2 1 c 3
3 2 b 1
4 2 c 4
5 3 b 1
6 3 a 3
- 3 回答
- 0 关注
- 1046 浏览
添加回答
举报
0/150
提交
取消