Home > Net >  Ungrouping data frame - R
Ungrouping data frame - R

Time:03-31

I have the following 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

And would like to end up with a DF with a number of rows equal to the sum of Amount, like this:

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

In fact is "just" an ungroup. But I've been trying to find a function that does that and couldn't find anything. There's one in dplyr but it must be used after the group one.

CodePudding user response:

You need the uncount() function from the package tidyr.

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
  • Related