How to expand data frame in R

I’m having following problem while doing some analysis with R.

I have a dataframe like this:

Name | Group | Count
Person 1 | A | 3
Person 2 | A | 1
Person 3 | A | 0
Person 1 | B | 5 
Person 2 | B | 0
Person 3 | B | 1
Person 1 | C | 1

and I’d need to “expand” it (not sure if the right term) to be like this:

Person 1 | A
Person 1 | A
Person 1 | A
Person 2 | A
Person 1 | B
Person 1 | B

etc.

So it takes value of pair Person 1 and A (in this example, 3) and makes three rows with Person 1 and A and does so for every Person – Group -combination. Can’t figure out any good words for searching online.

Answer

While it is a very useful package, I think reshape is overkill in this case, rep can do the job.

Here are some example data:

df <- data.frame(
     name=c("Person 1", "Person 2", "Person 3", "Person 1", "Person 2", "Person 3"),
     group=c("A", "A", "A", "B", "B", "B"),
     count=c(3,1,0,5,0,1))

Now, to “expand” it:

expanded <- data.frame(name = rep(df$name, df$count),
                       group = rep(df$group, df$count))

I could not find a way to work directly on the data frame off the top of my head so I am working on each variable separately and then reassembling them, which is a bit ugly but should be OK as long as you take care of always using the same variable for the counts.

Attribution
Source : Link , Question Author : Juha-Matti S. , Answer Author : Gala

Leave a Comment