#r #percentage #dummy-variable
Вопрос:
относительно новый для Р.
У меня есть набор данных, который выглядит так
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)
Как мне получить процентное соотношение » Да » и » Нет » для каждого столбца? Потенциально для сотен столбцов.
Ответ №1:
table
будет подсчитывать вхождения каждого уникального значения и prop.table
возвращать процент. Чтобы применить это для нескольких столбцов, вы можете использовать любую команду применить.
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
предположение, что нет будет 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