【问题标题】:Splitting a list or vector of strings into dummy columns in R将字符串列表或向量拆分为R中的虚拟列
【发布时间】:2019-12-24 14:56:10
【问题描述】:

我已经导入了一个包含许多(数千个)视频和不同变量的 JSON 字典。其中一个变量是“标签”,每个观察结果都不同。

例如

1 c("music", "guitar", "rock")
2 c("music", "diy", "recording")
3 c("hiking", "social")
4 tutorial

我想向数据框中添加新列,这些列是给定标签存在或不存在的虚拟变量

  music  guitar  rock  diy  recording  hiking  social tutorial
1   1       1     1     0       0        0       0       0
2   1       0     0     1       1        0       0       0
3   0       0     0     0       0        1       1       0
4   0       0     0     0       0        0       0       1

也有类似的问答,比如this one,但恐怕数据结构和目标不一样。

我没有自己有分隔符的字符串(例如 c("a,b,c", "c,d")),但分隔符仅由 c() 函数给出(在某些情况下)情况下只有一个标签本身,如“教程”中)。同时,可能的标签是事先不知道的,每个观察都可能为数据框添加新的列。

提前致谢

【问题讨论】:

  • 请使用dput()添加一些示例数据。
  • 我没有完整的答案给你,但是你可以使用下面的代码来获取每个观察的所有标记的向量apply(abc,1,function(x){unlist(strsplit(x$tags,", "))})

标签: r vector split


【解决方案1】:

一个选项是mtabulate

library(qdapTools)
cbind(df1, mtabulate(df1$tags))

【讨论】:

    猜你喜欢
    • 2013-04-01
    • 2014-09-27
    • 1970-01-01
    • 1970-01-01
    • 2021-10-29
    • 1970-01-01
    • 1970-01-01
    • 2019-04-16
    • 1970-01-01
    相关资源
    最近更新 更多