根据行位置范围对分组数据框进行子集化

Subset a grouped data frame based on range of row position

我有一个分组数据框,我希望为每个组(名称)保留给定范围内的行。例如,在第 2 和第 3 个位置之间。

df <- data.frame(name = c("a", "a", "a", "b", "b", "c", "c", "c", "c"), x = 1:9)
df
  name x
1    a 1
2    a 2
3    a 3
4    b 4
5    b 5
6    c 6
7    c 7
8    c 8

这里我想要这样的输出

  name x
1    a 2
2    a 3
3    b 5
4    c 7
5    c 8

谢谢,

我找到的解决方案是使用 dplyr::slice(2:3)

首先,group_by name,然后 slice 从索引 2:3:

library(dplyr)
df %>%
  group_by(name) %>%
  slice(2:3)
# A tibble: 5 x 2
# Groups:   name [3]
  name      x
  <chr> <int>
1 a         2
2 a         3
3 b         5
4 c         7
5 c         8