问题
使用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) %>%
ungroup
lastStop <- df %>%
group_by(id) %>%
arrange(stopSequence) %>%
slice(n()) %>%
ungroup
我能否将这两个语句合并为一个语句,以选择顶部和底部的观察结果?