Split data.frame row into multiple rows based on commas

前端 未结 3 1096
眼角桃花
眼角桃花 2020-12-18 09:12

I am attempting to split a row in a data.frame based on the character sequence \", \". Here\'s an example:

mydat <- data.frame(v1 = c(\"name,         


        
相关标签:
3条回答
  • 2020-12-18 09:50

    This should work.

    install.packages("splitstackshape")
    library(splitstackshape)
    out <- concat.split.multiple(mydat, c("v1","v2"), seps=",", "long")
    
    
    out
         v1 v2 v3
    1:  name  1  1
    2: name2  2  1
    3: name3  3  2
    4: name4  4  3
    5: name5  5  3
    
    0 讨论(0)
  • 2020-12-18 09:56

    For posterity, users with an inclination for tidyverse packages can use tidyr's separate_rows function along with select from dplyr (to maintain the order of the columns) to get this done:

    library(tidyverse)
    
    mydat %>% separate_rows(v1,v2,sep=", ") %>% 
            select(v1, v2, v3)
    
    #     v1 v2 v3
    #1  name  1  1
    #2 name2  2  1
    #3 name3  3  2
    #4 name4  4  3
    #5 name5  5  3
    
    0 讨论(0)
  • 2020-12-18 10:16

    Here's another way using data.table package and its new tstrsplit function

    library(data.table) # v >= 1.9.5
    setDT(mydat)[, lapply(.SD, tstrsplit, ", "), by = v3]
    #    v3    v1 v2
    # 1:  1  name  1
    # 2:  1 name2  2
    # 3:  2 name3  3
    # 4:  3 name4  4
    # 5:  3 name5  5
    
    0 讨论(0)
提交回复
热议问题