Dplyr: как суммировать данные, но сохранить все столбцы


При использовании функции summarise() в dplyr любые переменные, не включенные в функции summarise() или group_by() , будут автоматически удалены.

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

В следующем примере показано, как использовать эту функцию на практике.

Пример: суммируйте данные, но сохраните все столбцы, используя dplyr.

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

 #create data frame
df <- data. frame (team=rep(c(' A ', ' B ', ' C '), each= 3 ),
                 points=c(4, 9, 8, 12, 15, 14, 29, 30, 22),
                 assists=c(3, 3, 2, 5, 8, 10, 4, 5, 12))

#view data frame
df

  team points assists
1 to 4 3
2 to 9 3
3 to 8 2
4 B 12 5
5 B 15 8
6 B 14 10
7 C 29 4
8 C 30 5
9 C 22 12

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

 library (dplyr)

#summarize mean points values by team
df %>%
  group_by(team) %>%
  summarize(mean_pts = mean(points))

# A tibble: 3 x 2
  team mean_pts
      
1 to 7  
2 B 13.7
3 C 27

В столбце Mean_pts отображается среднее количество очков, набранных каждой командой.

По результату мы видим:

  • Среднее количество очков, набранных игроками команды А, равно 7 .
  • Среднее количество очков, набранных игроками команды Б, составляет 13,7 .
  • Среднее количество очков, набранных игроками команды С, составляет 27 .

Однако предположим, что мы хотим сохранить все остальные столбцы из исходного фрейма данных.

Для этого мы можем использовать следующий синтаксис с функцией mutate() :

 library (dplyr)

#summarize mean points values by team and keep all columns
df %>%
  group_by(team) %>%
  mutate(mean_pts = mean(points)) %>%
  A group()

# A tibble: 9 x 4
  team points assists mean_pts
           
1 to 4 3 7  
2 to 9 3 7  
3 to 8 2 7  
4 B 12 5 13.7
5 B 15 8 13.7
6 B 14 10 13.7
7 C 29 4 27  
8 C 30 5 27  
9 C 22 12 27

Используя функцию mutate() , мы можем создать новый столбец под названием Mean_pts , в котором суммируются средние баллы, набранные каждой командой, сохраняя при этом все остальные столбцы из исходного фрейма данных.

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

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

dplyr: как изменить переменную, если столбец содержит строку
dplyr: Как изменить уровни факторов с помощью mutate()
dplyr: Как добавить несколько столбцов

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *