【问题标题】:How do I tabulate / count multiple columns of TRUE or FALSE data in R?如何在 R 中制表/计算多列 TRUE 或 FALSE 数据?
【发布时间】:2016-02-19 09:46:47
【问题描述】:

我有几列数据显示为 TRUE 或 FALSE。这是唯一的数据。我想要两行读取“TRUE”和“FALSE”,并在每个列标题下显示计数。

示例数据:

Red    Blue    Green
True   True    True
True   False   False
False  False   True

我想要的输出:

     Red Blue Green
True: 2    1    2 
False: 1   2    1

table() 命令不起作用,因为它会将 TRUE 或 FALSE 的所有可能组合相互制表。

【问题讨论】:

  • 你的数据是什么类别的?
  • 只有逻辑数据的数据框。

标签: r


【解决方案1】:

我们可以试试

sapply(df,table)
#      Red Blue Green
#False   1    2     1
#True    2    1     2

【讨论】:

  • 发布的每个答案都对我有用,但是这个答案是迄今为止最简单的。谢谢!
【解决方案2】:

你也可以试试“qdapTools”中的mtabulate

library(qdapTools)
mtabulate(mydf)
#       False True
# Red       1    2
# Blue      2    1
# Green     1    2

如果需要,转置 (t())。

【讨论】:

    【解决方案3】:

    使用reshape 包中的melt 函数在宽格式和长格式之间切换

    Red<-c(TRUE,TRUE,FALSE)
    Blue<-c(TRUE,FALSE,FALSE)
    Green<-c(TRUE,FALSE,TRUE)
    df<-cbind(Red,Blue,Green)
    
    require(reshape)
    
    df1<-melt(df)
    table(df1$X2,df1$value)
    

    【讨论】:

      【解决方案4】:

      我们可以在unlist数据集之后尝试table

      v1 <- unlist(df1)
      table(v1, sub('\\d+','', names(v1)))
      #   v1      Blue Green Red
      #    False    2     1   1
      #    True     1     2   2
      

      或者

      table(df1=='True', names(df1)[col(df1)])
      #        Blue Green Red
      # FALSE    2     1   1
      # TRUE     1     2   2
      

      注意:不使用循环或不使用外部包。

      【讨论】:

        猜你喜欢
        • 2019-05-02
        • 1970-01-01
        • 2018-08-14
        • 1970-01-01
        • 2020-08-24
        • 2021-12-25
        • 2019-05-05
        • 2020-12-10
        • 2022-06-21
        相关资源
        最近更新 更多