问题
使用dplyr,如何在一个语句中选择分组数据的顶部和底部观察值/行?
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,但使用两个单独的语句:
slice
firstStop <- df %>% group_by(id) %>% arrange(stopSequence) %>% slice(1) %>% ungroup lastStop <- df %>% group_by(id) %>% arrange(stopSequence) %>% slice(n()) %>% ungroup
我可以将这两个语句组合成一个同时选择 顶部 和底部观察值的语句吗?
可能有更快的方法:
df %>% group_by(id) %>% arrange(stopSequence) %>% filter(row_number()==1 | row_number()==n())