Используя dplyr
, вы можете просто group_by
и summarize
:
food %>%
group_by(foodID) %>%
summarize(calories_average = mean(calories),
protein_average = mean(protein))
# A tibble: 3 x 3
foodID calories_average protein_average
<int> <dbl> <dbl>
1 123 0.41 0.7
2 432 0.65 0.7
3 983 0.82 0.6
Вместо указания каждой переменной вы можете использовать summarize_at
, чтобы выбрать несколько переменных для суммирования сразу. Мы передаем 2 аргумента: переменные для суммирования и список функций, которые необходимо применить к ним. Если список назван так, как здесь, то имя добавляется в сводный столбец в виде суффикса (с указанием «calores_average» и «protein_average»:
food %>%
group_by(foodID) %>%
summarize_at(c('calories', 'protein'), list(average = mean))
summarize_at
также позволяет использовать различные вспомогательные функции для выбора переменных по префиксу, суффиксу или регулярному выражению (как показано ниже). Вы можете узнать больше о них здесь: ?tidyselect::select_helpers
food %>%
group_by(foodID) %>%
summarize_at(vars(matches('calories|protein')), list(average = mean))