2017-02-22 149 views
-1

我有一个数据框,其中一列是列表。我想将其铸造成一个整体的数据帧:将具有列表类型列的数据帧转换为平坦数据帧

df=data.frame(col1=c(LETTERS[1:3]),col2=c('X,Y,Z','W,V','U')) 
> df 
    col1 col2 
1 A X,Y,Z 
2 B W,V 
3 C  U 
> 

而想要使另一数据帧为了便于观察和进一步加工,如:

> data.frame(col1=c('A','A','A','B','B','C'),col2=LETTERS[26:21]) 
    col1 col2 
1 A Z 
2 A Y 
3 A X 
4 B W 
5 B V 
6 C U 
> 

在COL2值的数量从变化1到5在我的真实数据集。目前,我已经试过

library(stringr) 
> str_split(df[,2],',') 
[[1]] 
[1] "X" "Y" "Z" 

[[2]] 
[1] "W" "V" 

[[3]] 
[1] "U" 

> unlist(str_split(df[,2],',')) 
[1] "X" "Y" "Z" "W" "V" "U" 

但我不知道如何进行每个COL2价值与它的正确的col1值与链接

+0

此外[在列中分隔分隔字符串并插入为新行](http://stackoverflow.com/questions/1 5347282/split-delimited-strings-in-a-column-and-insert-as-new-rows) –

回答

0

我们可以做到这一点base R

stack(setNames(strsplit(as.character(df$col2), ","), df$col1)) 
+1

你为什么不把它提供给复制目标? –

+1

或者添加一个类似你的答案的链接(http://stackoverflow.com/a/37130811/3521006) –