将分类变量转换为 R 中的二进制列

Convert categorical variable into binary columns in R

我犯了一个愚蠢的错误,就是让人们在一个调查问题中 select 多个类别。

现在这个问题的数据列看起来与此类似。

respondent answer_openq
1 a
2 a,c
3 b
4 a,d

在 r 中使用以下行,

datanum <- data %>% mutate(dummy=1) %>%
spread(key=answer_openq,value=dummy, fill=0)

我得到以下信息:

但是,我希望数据集转换成这样:

respondent a b c d
1 1 0 0 0
2 1 0 1 0
3 0 1 0 0
4 1 0 0 1

感谢任何帮助(我的论文依赖于此)。谢谢:)

试试这个:

library(dplyr)
library(tidyr)
df %>%
  separate_rows(answer_openq, sep = ',') %>%
  pivot_wider(names_from = answer_openq, values_from = answer_openq, 
              values_fn = function(x) 1, values_fill = 0)
# A tibble: 4 × 5
  respondent     a     c     b     d
       <int> <dbl> <dbl> <dbl> <dbl>
1          1     1     0     0     0
2          2     1     1     0     0
3          3     0     0     1     0
4          4     1     0     0     1