取消分组数据框 - R

Ungrouping data frame - R

我有以下DF:

df <- data.frame(Type  = c("A", "A", "B"),
                 Day = c(1, 1, 1),
                 Hour = c(1,2,1),
                 Amount = c(2,3,2))

Type   Day   Hour   Amount
   A     1      1        2
   A     1      2        3
   B     1      1        2

并希望最终得到一个行数等于 Amount 总和的 DF,如下所示:

Type   Day   Hour   
   A     1      1        
   A     1      1        
   A     1      2        
   A     1      2        
   A     1      2        
   B     1      1        
   B     1      1     

事实上“只是”一个解组。但是我一直在尝试找到一个可以做到这一点的功能,但找不到任何东西。 dplyr里面有,但是必须在第一组之后用。

您需要包 tidyr 中的 uncount() 函数。

library(tidyverse)

df %>% uncount(Amount)

  Type Day Hour
1    A   1    1
2    A   1    1
3    A   1    2
4    A   1    2
5    A   1    2
6    B   1    1
7    B   1    1

base Rrep

结合使用
df[rep(seq_len(nrow(df)), df$Amount),]