Использование данных mtcars для составления сводной таблицы цилиндров по сравнению с центрированными (миль на галлон)

Не знаю ... Я использую R / RStudio с данными mtcars, dplyr, mutate и команды суммировать. Также попробовал группу по.

Я хочу центрировать значения mtcars $ mpg, затем взять эту информацию и отобразить сводку количества цилиндров по сравнению с центрированными mtcars $ mpg.

Так далеко...

mtcars %>% mutate(centered_mpg = mpg - mean(mpg, na.rm = TRUE)) %>% summarise(centered_mpg, cyl)

Вышеупомянутое дает:

centered_mpg cyl
0.909375 6
0.909375 6
2.709375 4
1.309375 6
... ...

ВМЕСТО, ХОЧУ:

centered_mpg cyl
x1 4
x2 6
x3 8

person oaxacamatt    schedule 12.01.2021    source источник
comment
Как вы хотите суммировать центрированные mpg для каждой группы автомобилей (для каждого значения cyl)? Вы хотите среднее центрированное миль на галлон по цилиндру? Или медиана, сумма, что-то еще? Я представляю что-то вроде mtcars %>% mutate(centered_mpg = mpg - mean(mpg, na.rm = TRUE)) %>% group_by(cyl) %>% summarise(mean_centered_mpg = mean(centered_mpg)), но поменяйте mean() внутри summarize() на любую функцию, которую вы хотите.   -  person Gregor Thomas    schedule 12.01.2021
comment
Я думаю, это билет.   -  person oaxacamatt    schedule 12.01.2021


Ответы (2)


Вы это ищете?

with(mtcars, aggregate(list(centered_mpg=scale(mpg, scale=FALSE)), list(cyl=cyl), mean))
#   cyl centered_mpg
# 1   4    6.5730114
# 2   6   -0.3477679
# 3   8   -4.9906250
person jay.sf    schedule 12.01.2021
comment
Я считаю, что OP хочет scale(mpg, scale = FALSE). - person Rui Barradas; 12.01.2021
comment
@RuiBarradas Верно, обновлено! - person jay.sf; 12.01.2021

Похоже, вы хотите центрировать mpg каждого отдельного автомобиля, вычитая глобальный mean(mpg). Это дает centered_mpg для каждой машины - и код, который у вас есть, отлично подходит для этого.

Затем вы хотите рассчитать какую-то сводку центрированных значений миль на галлон по группам цилиндров, поэтому нам нужно group_by(cyl), а затем определить любую функцию сводки, которую вы хотите - здесь я использую mean(), но вы можете использовать median, sum или что угодно еще. нравиться.

mtcars %>% 
  mutate(centered_mpg = mpg - mean(mpg, na.rm = TRUE)) %>% 
  group_by(cyl) %>% 
  summarise(mean_centered_mpg = mean(centered_mpg))
# # A tibble: 3 x 2
#     cyl mean_centered_mpg
#   <dbl>             <dbl>
# 1     4             6.57 
# 2     6            -0.348
# 3     8            -4.99 
person Gregor Thomas    schedule 12.01.2021