Частоты / проценты нескольких двоичных переменных по группам с dplyr - PullRequest
1 голос
/ 05 августа 2020

Я пытаюсь получить таблицу, которая отображала бы процентное соотношение нескольких двоичных переменных по группирующей переменной. Это пример имеющихся у меня данных и того, что я пробовал.

var1 <- c(0,1,0, 0, 1, 0, 1, 0)
var2 <- c(1, 0, 0, 1, 0, 1, 0, 0)
var3 <- c(0, 0, 0, 1,1,0, 0, 0)
gender <- c("female", "male", "female", "male", "male", "male", "female", "male")
other <- c(1, 4, 5, 1, 2, 2, 3, 5)

data<- cbind(var1, var2, var3, gender, other) %>% as.data.frame()



data %>%
  group_by(gender) %>%
  summarise (n = n()) %>%
  mutate(freq = n / sum(n))

Это код возвращает.

# A tibble: 2 x 3
  gender     n  freq
  <fct>  <int> <dbl>
1 female     3 0.375
2 male       5 0.625

Я бы хотел увидеть процент респондентов в каждая переменная, ответившая на 1 по полу (числа приведены только для примера, поскольку я их не знаю, и это то, что я хотел бы выяснить).

  gender     n total   freqvar1  freqvar2  freqvar3  
1 female     3        0.375       0.456     0.300
2 male       5        0.625       0.544     0.700

Большое спасибо за помощь !

1 Ответ

0 голосов
/ 05 августа 2020

После группировки по «полу» получить «общее» с помощью n(), затем l oop по переменным «var» с помощью across, получить mean логического vector

library(dplyr) # 1.0.0
data %>% 
   group_by(gender) %>% 
       summarise(total = n(), 
            across(starts_with('var'), ~ mean(. == 1)))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...