Повторение средней оценки по группам по каждому столбцу в отдельности - PullRequest
1 голос
/ 10 июля 2019

Я хотел бы оценить средневзвешенное значение для 47-факторных переменных по уровням (5 уровней). Я хотел бы сделать это отдельно для каждой переменной. 47 представляющих интерес переменных называются skill_1, skill_2 .... skill_47

Я знаю, как это сделать для одного столбца:

earning<-group_by(mydata, skill_1)

earning_by<-summarise(earning, earw=weighted.mean(ear, weight, na.rm=TRUE))

Результат, который я получаю, следующий (зарабатывание 5 уровнями навыков_1)

skill_1     earw
   <dbl>    <dbl>
1      1   22568.
2      2   21813.
3      3   20361.
4      4   19219.
5      5   14121.

Но я не знаю, как это можно сделать для всех 47 переменных по отдельности. Я бы предпочел не делать это 47 раз.

Я пробовал group_by_at:

earning<-group_by_at(mydata, .vars = vars(153:200)) 

но в моем случае это не работает, так как все переменные группируются вместе.

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

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

1 Ответ

1 голос
/ 10 июля 2019

Вы можете попробовать с gather и spread:

mydata <- tibble(skill_1 = sample(1:5, 100, replace=T),
                 skill_2 = sample(1:5, 100, replace=T), 
                 skill_3= sample(1:5, 100, replace=T), 
                 ear = runif(100, 0, 1))

  mydata %>% 
      gather("key", "value", contains("skill")) %>% 
      group_by(key, value) %>% 
      summarise(mean = mean(ear)) %>% 
      spread("key", "mean")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...