Как сравнить среднюю группу для каждой отдельной группы? - PullRequest
0 голосов
/ 14 мая 2018

У меня большой набор данных, и есть много разных столбцов, по которым я пытаюсь сгруппировать данные. Я пытаюсь создать новый столбец, используя dplyr и mutate, что является средним значением для каждой отдельной группы. Затем я хочу увидеть разницу между этими средствами и средним значением только одной категории.

Этот вопрос может относиться к набору данных mtcars. Как бы я сгруппировал данные mtcars по "cyl" и "gear", а затем взял бы среднее значение "mpg" для каждой группы. Затем я хочу увидеть разницу среднего значения "mpg" в каждой группе по сравнению со всеми автомобилями с "gear" == 5, но с переменной "cyl".

Я прошу прощения, если задаю тот же вопрос, что и другие, но я не смог найти этот конкретный вопрос.

df <- mtcars
df2 <- df %>% group_by(cyl, gear) %>% mutate(mean_mpg = mean(mpg))

Ответы [ 3 ]

0 голосов
/ 14 мая 2018
df2 <- df %>%
  group_by(cyl, gear) %>%
  summarise(mean_mpg = mean(mpg)) %>%
  mutate(comparison_mpg = mean_mpg[which(gear == 5)],
         mpg_diff = mean_mpg - comparison_mpg)

Результат

# A tibble: 8 x 5
# Groups:   cyl [3]
    cyl  gear mean_mpg comparison_mpg mpg_diff
  <dbl> <dbl>    <dbl>          <dbl>    <dbl>
1    4.    3.     21.5           28.2  -6.70  
2    4.    4.     26.9           28.2  -1.27  
3    4.    5.     28.2           28.2   0.    
4    6.    3.     19.8           19.7   0.0500
5    6.    4.     19.8           19.7   0.0500
6    6.    5.     19.7           19.7   0.    
7    8.    3.     15.0           15.4  -0.350 
8    8.    5.     15.4           15.4   0.    
0 голосов
/ 14 мая 2018

Исходя из вашего комментария, я думаю, что это то, что вы после:

mtcars %>% group_by(cyl) %>%
    summarize(mean_by_cyl = mean(mpg),
              mean_gear5_by_cyl = mean(mpg[gear == 5]),
              mean_diff_from_gear5 = mean_by_cyl - mean_gear5_by_cyl)
# # A tibble: 3 x 4
#     cyl mean_by_cyl mean_gear5_by_cyl mean_diff_from_gear5
#   <dbl>       <dbl>             <dbl>                <dbl>
# 1     4    26.66364              28.2          -1.53636364
# 2     6    19.74286              19.7           0.04285714
# 3     8    15.10000              15.4          -0.30000000
0 голосов
/ 14 мая 2018

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

mtcars %>%  
  group_by(cyl,gear) %>% 
  mutate(mean_mpg_both = mean(mpg)) %>% 
  ungroup %>% 
  group_by(gear) %>% 
  mutate(mean_gear_mpg = mean(mpg)) %>% 
  ungroup %>% 
  group_by(cyl) %>% 
  mutate(mean_cyl_mpg = mean(mpg)) %>% 
  select(mpg,cyl,gear,mean_mpg_both,mean_gear_mpg, mean_cyl_mpg) %>% 
  group_by(cyl,gear) %>% 
  filter(row_number()==1)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...