【问题标题】:Convert Yes/No/Absent data into Binary Matrix [duplicate]将 Yes/No/Absent 数据转换为二进制矩阵 [重复]
【发布时间】:2017-02-08 15:40:21
【问题描述】:

目前,我有一个投票数据数据集,其中每个人对多项政策进行了投票,无论是赞成还是反对,或者在对该特定政策进行投票时他们都缺席。

总的来说,我有 23 个策略,但我不知道如何将数据转换为二进制。 数据集的设置方式显然是 "n" = no , "y" = yes 和 "a" =缺席

如果有人可以在这里帮助我了解如何将 R 中的数据转换为二进制矩阵,我将不胜感激!

【问题讨论】:

    标签: r matrix binary


    【解决方案1】:

    这可以使用model.matrix 来完成。请注意,这在 R 中的许多情况下会自动为您完成,例如回归分析。

    > set.seed(1)
    > (df <- data.frame(id=1:10,vote=sample(c("yes","no","absent"),10,replace=TRUE)))
       id   vote
    1   1    yes
    2   2     no
    3   3     no
    4   4 absent
    5   5    yes
    6   6 absent
    7   7 absent
    8   8     no
    9   9     no
    10 10    yes
    > model.matrix(~.-1,df)
       id voteabsent voteno voteyes
    1   1          0      0       1
    2   2          0      1       0
    3   3          0      1       0
    4   4          1      0       0
    5   5          0      0       1
    6   6          1      0       0
    7   7          1      0       0
    8   8          0      1       0
    9   9          0      1       0
    10 10          0      0       1
    

    【讨论】:

      【解决方案2】:

      例如:

      m <- as.matrix(cbind(c('y','y','y'),c('n','n','n'),c('a','a','a')))
      m[m == 'y'] <- 1
      m[m == 'n'] <- 0
      m[m == 'a'] <- NA
      

      【讨论】:

      • 您应该改用TRUEFALSE。当然,使用您的方法,矩阵仍然是字符矩阵。
      • 按照你的方法我可能会这样做:m[m == 'a'] &lt;- NA; m[] &lt;- m == 'y'; storage.mode(m) &lt;- "logical"
      猜你喜欢
      • 1970-01-01
      • 2022-01-23
      • 2015-06-01
      • 2020-04-21
      • 1970-01-01
      • 2019-05-02
      • 1970-01-01
      • 2016-03-06
      • 1970-01-01
      相关资源
      最近更新 更多