我有一个数据集如下:
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中这样做?如果是,怎么样?
答案 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)