【问题标题】:convert dataframe to binary features in r将数据帧转换为r中的二进制特征
【发布时间】:2021-12-22 15:14:13
【问题描述】:

我有一个数据框:

参与者

答案

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

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

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

【问题讨论】:

    标签: r dataframe data-conversion


    【解决方案1】:

    在基础 R 中你可以这样做:

    data.frame(table(df1))
      participants answers Freq
    1            A   alpha    1
    2            B   alpha    0
    3            C   alpha    0
    4            A    beta    1
    5            B    beta    1
    6            C    beta    1
    7            A   gamma    1
    8            B   gamma    0
    9            C   gamma    1
    

    上面的排序方式与您的表不同。为此,您可以这样做:

    with(a<-data.frame(table(df1)), a[order(participants),])
      participants answers Freq
    1            A   alpha    1
    4            A    beta    1
    7            A   gamma    1
    2            B   alpha    0
    5            B    beta    1
    8            B   gamma    0
    3            C   alpha    0
    6            C    beta    1
    9            C   gamma    1
    

    【讨论】:

    • 谢谢!这很有帮助!
    【解决方案2】:

    如果原始数据是'df1',创建1s列后使用complete

    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))
    

    【讨论】:

    • 谢谢!这很有帮助!我从来不知道有一个“完整”的功能!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-28
    • 1970-01-01
    • 2023-01-07
    • 1970-01-01
    • 1970-01-01
    • 2020-09-08
    相关资源
    最近更新 更多