如何分隔列中的值并将它们添加到新行中?

时间:2015-06-01 07:25:09

标签: r

我有一个数据集如下:

col1    col2
a        1,2,3
b        ["1","2"]
c        4

我希望输出为:

col1     col2
a1         1
a2         2
a3         3
b1         1
b2         2
c          4

是否可以在R中这样做?如果是,怎么样?

1 个答案:

答案 0 :(得分:1)

尝试

library(splitstackshape)
 cSplit(transform(df1, col2= gsub('\\[|\\]|"', '', col2)), 'col2', ',', 'long')[
 ,col1:= if(.N>1) paste0(col1, 1:.N) else col1, col1]
#    col1 col2
#1:   a1    1
#2:   a2    2
#3:   a3    3
#4:   b1    1
#5:   b2    2
#6:    c    4

或使用base R

df2 <- stack(setNames(strsplit(gsub('[^0-9,]', '', df1$col2), ','), df1$col1))

df2$ind <-  with(df2, paste0(ind,ave(seq_along(ind), ind, 
    FUN= function(x) if(length(x)==1) '' else seq_along(x))))
colnames(df2) <- paste0('col', 2:1)