用逗号分隔的标签列表拆分数据框列

Bernat Gendra |

我正在处理带有标签特征的产品数据集。就是说,它们具有一个属性,该属性包含在逗号分隔的单词列表中。例如,

data.frame(
   id = c(11, 12, 13),
   tags =c("wood,small,old","big,iron,artistic", "pretty,wood")
)

我想将标签列分为每个标签的不同逻辑列,即

| id | wood | iron | small |  big |  old | artistic | pretty | 
------------------------------------------------------------
| 11 |  TRUE| FALSE|   TRUE| FALSE|  TRUE|     FALSE|   FALSE|
| 12 | FALSE|  TRUE|  FALSE|  TRUE| FALSE|      TRUE|   FALSE|
| 13 |  TRUE| FALSE|  FALSE| FALSE| FALSE|     FALSE|    TRUE|

我尝试使用包中separate函数tidyr,但是标签是无序的,因此很难为每个标签创建一列。

我找到了一种使用mutatefromdplyr包并为每个标签手动创建一列的解决方案

has_tag <- function(tag, tags) {
    strsplit(tags, ",") %>% map_lgl(function(x) tag %in% x)
}

df %>% 
    mutate(
        wood = has_tag("wood", tags),
        iron = has_tag("iron", tags),
        ...
    )

但是新的标记可能会在将来出现,我想使其具有可扩展性。

有什么方法可以轻松做到这一点?

Onyambu

您可以这样做:

library(tidyverse)
df %>% 
   separate_rows(tags) %>%
    mutate(val = TRUE) %>%
    spread(tags, val, FALSE)
      id artistic   big  iron   old pretty small  wood
    1 11    FALSE FALSE FALSE  TRUE  FALSE  TRUE  TRUE
    2 12     TRUE  TRUE  TRUE FALSE  FALSE FALSE FALSE
    3 13    FALSE FALSE FALSE FALSE   TRUE FALSE  TRUE

对于基数R,它需要一些步骤:

as.data.frame.matrix(xtabs(f~ind+values,
      cbind(stack(setNames(strsplit(as.character(df$tags),","),df$id)),f = 1))>0)

   artistic   big  iron   old pretty small  wood
11    FALSE FALSE FALSE  TRUE  FALSE  TRUE  TRUE
12     TRUE  TRUE  TRUE FALSE  FALSE FALSE FALSE
13    FALSE FALSE FALSE FALSE   TRUE FALSE  TRUE

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何提取/拆分数据框中的列表列以分隔唯一列?

来自分类Dev

将列值拆分为用逗号分隔的值列表

来自分类Dev

根据列中的列表项拆分数据框

来自分类Dev

在 PySpark 中的连字符分隔符上拆分数据框列

来自分类Dev

拆分数据框以创建新列

来自分类Dev

根据列值拆分数据框

来自分类Dev

根据列值拆分数据框

来自分类Dev

根据列值拆分数据框

来自分类Dev

拆分数据框的一列

来自分类Dev

使用python中该列唯一值的动态列表按列拆分数据框

来自分类Dev

根据列中的值拆分数据框 - 循环遍历 id 列表

来自分类Dev

计算列表中每个项目在pandas数据框列中出现的次数,用逗号分隔值,并附加其他列的汇总

来自分类Dev

用空格和逗号分隔分数来拆分团队名称

来自分类Dev

用空格和逗号分隔分数来拆分团队名称

来自分类Dev

如何在 Pandas 列中拆分逗号分隔的单词列表?

来自分类Dev

如何根据列名拆分数据框列表?

来自分类Dev

如何拆分数据框列并相应地复制行?

来自分类Dev

如何根据特定列的特定文本拆分数据框

来自分类Dev

按列值Scala拆分数据框

来自分类Dev

R按列中的新行拆分数据框

来自分类Dev

使用方括号拆分数据框列

来自分类Dev

在 R 中的多列中拆分数据框

来自分类Dev

如何拆分数据框的列并对其进行整形?

来自分类Dev

如何拆分数据框并绘制一些列

来自分类Dev

从列表中拆分数据

来自分类Dev

R从数据框中的逗号分隔列设置文本

来自分类Dev

从逗号分隔的列表中插入拆分的值

来自分类Dev

从逗号分隔的列表中插入拆分的值

来自分类Dev

逗号分隔列表的数据验证

Related 相关文章

热门标签

归档