首页 > 解决方案 > 将数据帧转换为r中的二进制特征

问题描述

我有一个数据框:

参与者 <- c(A, A, A, B, C, C)

答案 <- c(alpha, beta, gamma, beta, beta, gamma)

participants answers
A            alpha
A            beta
A            gamma
B            beta
C            beta
C            gamma

“答案”列包含的不仅仅是这个小集合。

如何将其变成如下二进制特征:

participant answers value
A           alpha   1
A           beta    1
A           gamma   1
B           alpha   0
B           beta    1
B           gamma   0
C           alpha   0
C           beta    1
C           gamma   1

我的猜测是我也必须获得“答案”和“参与者”的水平?

但我不确定下一步该怎么做。谢谢!

标签: rdataframedata-conversion

解决方案


如果原始数据为'df1',则complete在创建一列1s后使用

library(tidyr)
library(dplyr)
df1 %>%
    mutate(value = 1) %>%
    complete(participants, answers, fill = list(value = 0))

-输出

# A tibble: 9 × 3
  participants answers value
  <chr>        <chr>   <dbl>
1 A            alpha       1
2 A            beta        1
3 A            gamma       1
4 B            alpha       0
5 B            beta        1
6 B            gamma       0
7 C            alpha       0
8 C            beta        1
9 C            gamma       1

数据

df1 <- structure(list(participants = c("A", "A", "A", "B", "C", "C"), 
    answers = c("alpha", "beta", "gamma", "beta", "beta", "gamma"
    )), class = "data.frame", row.names = c(NA, -6L))

推荐阅读