【问题标题】:Get percentages of dummyvariables获取虚拟变量的百分比
【发布时间】:2021-11-04 22:57:10
【问题描述】:

对 R 来说相对较新。

我有一个看起来像这样的数据集

VAR01 <- c('Yes', 'No', 'Yes', 'Yes', 'No', 'No')
VAR02 <- c('No', 'No', 'Yes', 'No', 'No', 'Yes')
VAR03 <- c('Yes', 'Yes', 'No', 'Yes', 'No', 'Yes')

data <- data.frame(VAR01, VAR02, VAR03)

如何获得每列是和否的百分比?可能有数百列。

【问题讨论】:

    标签: r percentage dummy-variable


    【解决方案1】:

    table 将计算每个唯一值的出现次数,prop.table 将返回百分比。要将其应用于多个列,您可以使用任何 apply 命令。

    sapply(data, function(x) prop.table(table(x)))
    
    #    VAR01     VAR02     VAR03
    #No    0.5 0.6666667 0.3333333
    #Yes   0.5 0.3333333 0.6666667
    

    【讨论】:

      【解决方案2】:

      你可以使用colMeans,假设no将是1 - yes

      colMeans(data=="Yes")
      #    VAR01     VAR02     VAR03 
      #0.5000000 0.3333333 0.6666667 
      

      或者对于每个:

      x  <-  colMeans(data=="Yes")
      rbind(yes = x, no = 1- x)
      #    VAR01     VAR02     VAR03
      #yes   0.5 0.3333333 0.6666667
      #no    0.5 0.6666667 0.3333333
      

      【讨论】:

        【解决方案3】:

        使用across

        library(dplyr)
        
        data %>%
          summarise(across(everything(), ~mean(.x == "Yes") )) %>%
          add_row(1 - .[,c(1:3)]) %>% magrittr::set_rownames(c("yes", "no"))
        
            VAR01     VAR02 VAR03
        yes   0.5 0.3333333   0.5
        no    0.5 0.6666667   0.5
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-07-25
          • 2015-10-27
          • 2021-11-28
          • 1970-01-01
          • 2019-05-18
          • 1970-01-01
          相关资源
          最近更新 更多