【问题标题】:How do I create dummy variables in a dataframe from a vector of characters? [duplicate]如何从字符向量在数据框中创建虚拟变量? [复制]
【发布时间】:2020-11-26 04:45:59
【问题描述】:

我有一个数据框,其中一个变量是其他变量的列表。

data <- data.frame(
  id = c(10, 20, 30, 40),
  x = c("a,b", "a,d", "b,c", "d,b")
)
data <- data %>% mutate(x = strsplit(x, ",", fixed = TRUE))

  id   x
1 10 a,b
2 20 a,d
3 30 b,c
4 40 d,b

我想要一种简单的方法来根据变量是否在列表中来创建虚拟变量,并将这些结果放在原始数据框中。

例如,

  id a b c d
1 10 1 1 0 0
2 20 1 0 0 1
3 30 0 1 1 0
4 40 0 1 0 1

这与问题here 非常相似,但我找不到任何方法来获得任何建议的方法来处理数据框。 我查看了 dummies 包、qdapTools、fastDummies,但似乎没有我想要的东西。

非常感谢您的帮助!

【问题讨论】:

  • 不要运行strsplit 步骤。直接在data 上运行。 result &lt;- splitstackshape::cSplit_e(data, "x", type = 'character', fill = 0)

标签: r


【解决方案1】:

这行得通吗:

library(dplyr)
library(tidyr)
data %>% separate_rows(x, sep = ',') %>% mutate(val = 1) %>% 
+   pivot_wider(names_from = x, values_from = val, values_fill = list(val = 0)) %>% 
+   select(1,2,3,5,4)
# A tibble: 4 x 5
     id     a     b     c     d
  <dbl> <dbl> <dbl> <dbl> <dbl>
1    10     1     1     0     0
2    20     1     0     0     1
3    30     0     1     1     0
4    40     0     1     0     1

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-06-25
    • 1970-01-01
    • 2019-05-05
    • 1970-01-01
    • 2015-12-18
    • 2015-05-11
    相关资源
    最近更新 更多