问题描述
可能有更快的方法:
df %>%
group_by(id) %>%
arrange(stopSequence) %>%
filter(row_number()==1 | row_number()==n())
解决方法
问题
使用dplyr
,如何在一个语句中选择分组数据的顶部和底部观察值/行?
数据与示例
给定一个数据框:
df <- data.frame(id=c(1,1,2,3,3),stopId=c("a","b","c","a","c"),stopSequence=c(1,4,2))
我可以使用 获得每个组的顶部和底部观察值slice
,但使用两个单独的语句:
firstStop <- df %>%
group_by(id) %>%
arrange(stopSequence) %>%
slice(1) %>%
ungroup
lastStop <- df %>%
group_by(id) %>%
arrange(stopSequence) %>%
slice(n()) %>%
ungroup
我可以将这两个语句组合成一个同时选择 顶部 和底部观察值的语句吗?