将分类变量转换为 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
我犯了一个愚蠢的错误,就是让人们在一个调查问题中 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