Как суммировать несколько столбцов с помощью dplyr


Вы можете использовать следующие методы для суммирования нескольких столбцов во фрейме данных с помощью dplyr:

Метод 1: суммировать все столбцы

#summarise mean of all columns
df %>%
 group_by(group_var) %>%
 summarise(across(everything(), mean, na. rm = TRUE ))

Метод 2: суммировать определенные столбцы

#summarise mean of col1 and col2 only
df %>%
 group_by(group_var) %>%
 summarise(across(c(col1, col2), mean, na. rm = TRUE ))

Способ 3: суммировать все числовые столбцы

#summarise mean and standard deviation of all numeric columns
df %>%
 group_by(group_var) %>%
 summarise(across(where(is. numeric ), list(mean=mean, sd=sd), na. rm = TRUE ))

В следующих примерах показано, как использовать каждый метод со следующим фреймом данных:

#create data frame
df <- data.frame(team=c('A', 'A', 'A', 'B', 'B', 'B'),
 points=c(99, 90, 86, 88, 95, 90),
 assists=c(33, 28, 31, 39, 34, 25),
 rebounds=c(NA, 28, 24, 24, 28, 19))

#view data frame
df

 team points assists rebounds
1 A 99 33 NA
2 A 90 28 28
3 A 86 31 24
4 B 88 39 24
5 B 95 34 28
6 B 90 25 19

Пример 1: суммировать все столбцы

Следующий код показывает, как суммировать среднее значение всех столбцов:

library(dplyr)

#summarise mean of all columns, grouped by team
df %>%
 group_by(team) %>%
 summarise(across(everything(), mean, na. rm = TRUE ))

# A tibble: 2 x 4
 team points assists rebounds

1 A 91.7 30.7 26 
2 B 91 32.7 23.7

Пример 2. Суммирование определенных столбцов

В следующем коде показано, как суммировать среднее значение только столбцов очков и подборов :

library(dplyr)

#summarise mean of points and rebounds, grouped by team
df %>%
 group_by(team) %>%
 summarise(across(c(points, rebounds), mean, na. rm = TRUE ))

# A tibble: 2 x 3
 team points rebounds

1 A 91.7 26 
2 B 91 23.7

Пример 3: суммирование всех числовых столбцов

В следующем коде показано, как суммировать среднее значение и стандартное отклонение для всех числовых столбцов во фрейме данных:

library(dplyr)

#summarise mean and standard deviation of all numeric columns
df %>%
 group_by(team) %>%
 summarise(across(where(is. numeric ), list(mean=mean, sd=sd), na. rm = TRUE ))

# A tibble: 2 x 7
 team points_mean points_sd assists_mean assists_sd rebounds_mean rebounds_sd

1 A 91.7 6.66 30.7 2.52 26 2.83
2 B 91 3.61 32.7 7.09 23.7 4.51

Выходные данные отображают среднее значение и стандартное отклонение для всех числовых переменных во фрейме данных.

Обратите внимание, что в этом примере мы использовали функцию list() для вывода нескольких сводных статистических данных, которые мы хотели рассчитать.

Примечание.В каждом примере мы использовали функцию dplyr through ().Полную документацию по этой функции вы можете найти здесь .

Дополнительные ресурсы

В следующих руководствах объясняется, как выполнять другие распространенные функции с помощью dplyr:

Как удалить строки с помощью dplyr
Как упорядочить строки с помощью dplyr
Как фильтровать по нескольким условиям с помощью dplyr

Замечательно! Вы успешно подписались.
Добро пожаловать обратно! Вы успешно вошли
Вы успешно подписались на кодкамп.
Срок действия вашей ссылки истек.
Ура! Проверьте свою электронную почту на наличие волшебной ссылки для входа.
Успех! Ваша платежная информация обновлена.
Ваша платежная информация не была обновлена.