获取虚拟变量的百分比

Get percentages of dummyvariables

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

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

使用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

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

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

您可以使用 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