为了账号安全,请及时绑定邮箱和手机立即绑定

从分组数据中选择第一行和最后一行

从分组数据中选择第一行和最后一行

四季花海 2019-10-06 14:46:37
题使用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())


查看完整回答
反对 回复 2019-10-06
?
忽然笑

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


查看完整回答
反对 回复 2019-10-06
  • 3 回答
  • 0 关注
  • 1001 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信