Получите процентное соотношение переменных для чайников

#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