【问题标题】:convert data frame with a column of type list to a flat data frame [duplicate]将具有列表类型列的数据框转换为平面数据框[重复]
【发布时间】:2017-02-22 09:25:52
【问题描述】:

我有一个数据框,其中一列是列表。我想把它转换成一个完整的数据框:

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 值链接

【问题讨论】:

    标签: r list dataframe casting


    【解决方案1】:

    我们可以通过base R 做到这一点

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

    【讨论】:

    猜你喜欢
    • 2020-07-14
    • 2020-05-31
    • 1970-01-01
    • 1970-01-01
    • 2021-05-16
    • 1970-01-01
    • 1970-01-01
    • 2013-01-27
    相关资源
    最近更新 更多