Search code examples
rdplyrduplicatesrowsrowwise

dplyr: repeating rows based on splitted factor


I was wondering if it is possible to use dplyr to repeat rows based on the result of a function.

If I have a data frame that looks like this:

df <- data.frame(count = 1:4, type = LETTERS[1:4], subtype = letters[1:4], 
             stringsAsFactors = F)
df[2,"subtype"] <- "a,b"

  count type subtype
1     1    A       a
2     2    B     a,b
3     3    C       c
4     4    D       d

Is it possible to repeat the same row for each subtype letter after splitting them according the the comma? I would like to get something like this:

  count type subtype
1     1    A       a
2     2    B       a
3     2    B       b
4     3    C       c
5     4    D       d

I tried using rowwise + do but I'm still struggling with no results!

Thanks in advance,

Giovanni


Solution

  • df <- data.frame(count = 1:4, type = LETTERS[1:4], subtype = letters[1:4], 
                     stringsAsFactors = F)
    df[2,"subtype"] <- "a,b"
    
    library(tidyverse)
    
    df %>% separate_rows(subtype)
    
    #   count type subtype
    # 1     1    A       a
    # 2     2    B       a
    # 3     2    B       b
    # 4     3    C       c
    # 5     4    D       d