获取虚拟变量的百分比
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
对 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