如何根据一列的数量按组切割一定数量的行?

How can I cut an amount of rows by group based in the number of one column?

我想根据“计数”列中指定的数字按组(“组”列)从我的数据框中剪切行。

数据看起来像这样

Group       Count    Result      Result 2
  <chr>     <dbl>  <dbl>        <dbl>
1 Ane           3      5           NA
2 Ane           3      6            5
3 Ane           3      4            5
4 Ane           3      8            5
5 Ane           3      7            8
6 John          2      9           NA
7 John          2      2           NA
8 John          2      4            2
9 John          2      3            2

预期结果

Group       Count    Result      Result 2
  <chr>     <dbl>    <dbl>        <dbl>
1 Ane           3      5           NA
2 Ane           3      6            5
3 Ane           3      4            5
6 John          2      9           NA
7 John          2      2           NA

谢谢!

根据'Group'

分组后,我们可以在'Count'的first值上使用slice
library(dplyr)
df1 %>% 
    group_by(Group) %>% 
    slice(seq_len(first(Count))) %>%
    ungroup

-输出

# A tibble: 5 × 4
  Group Count Result Result2
  <chr> <int>  <int>   <int>
1 Ane       3      5      NA
2 Ane       3      6       5
3 Ane       3      4       5
4 John      2      9      NA
5 John      2      2      NA

或者使用 filterrow_number() 来创建一个逻辑向量

df1 %>% 
   group_by(Group) %>% 
   filter(row_number() <= Count) %>%
   ungroup

数据

df1 <- structure(list(Group = c("Ane", "Ane", "Ane", "Ane", "Ane", "John", 
"John", "John", "John"), Count = c(3L, 3L, 3L, 3L, 3L, 2L, 2L, 
2L, 2L), Result = c(5L, 6L, 4L, 8L, 7L, 9L, 2L, 4L, 3L), Result2 = c(NA, 
5L, 5L, 5L, 8L, NA, NA, 2L, 2L)), class = "data.frame", row.names = c("1", 
"2", "3", "4", "5", "6", "7", "8", "9"))