как рассчитать пропорцию по другой переменной (не по частоте) в dplyr в R - PullRequest
0 голосов
/ 06 июня 2019

Используя данные mtcars, я хочу вычислить пропорцию mpg для каждой группы cyl и am.Как рассчитать это?

mtcars %>%
   group_by(cyl, am) %>%
   summarise(mpg = n(mpg)) %>%
   mutate(mpg.gr = mpg/(sum(mpg))

Заранее спасибо!

1 Ответ

1 голос
/ 06 июня 2019

Если я правильно вас понимаю, вы хотите, чтобы доля записей для каждой комбинации cyl и am. Если так, то я считаю, что ваш код не работает, потому что n() не принимает аргумент. Вам также нужно ungroup(), прежде чем вычислять ваши пропорции.

Вы можете просто сделать:

mtcars %>%
   group_by(cyl, am) %>%
   summarise(mpg = n()) %>%
   ungroup() %>%
   mutate(mpg.gr = mpg/(sum(mpg))

#> # A tibble: 6 x 4
#>     cyl    am   mpg mpg.gr
#>   <dbl> <dbl> <int>  <dbl>
#> 1     4     0     3 0.0938
#> 2     4     1     8 0.25  
#> 3     6     0     4 0.125 
#> 4     6     1     3 0.0938
#> 5     8     0    12 0.375 
#> 6     8     1     2 0.0625

Обратите внимание, что благодаря ungroup() пропорции рассчитываются с использованием количества всех записей, а не только тех, которые находятся в группе cyl, как и раньше.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...