База R вместо dplyr: группировать и суммировать данные? - PullRequest
1 голос
/ 07 мая 2019

Набор данных доступен на Kaggle: https://www.kaggle.com/heesoo37/120-years-of-olympic-history-athletes-and-results/

Я хочу знать, можем ли мы использовать Base R для создания объекта, который содержит для каждой комбинации пола и сезона количество различных видов спорта внабор данных?

Я уже использовал для этого пакет dplyr, и он работал:

data %>% 
group_by(Sex, Season) %>% 
summarise(num_sports_played = length(unique(Sport)))

Но я хотел бы знать, возможно ли это сделать и с базой R.Результатом должна быть таблица из 4 строк и трех столбцов (пол, сезон, количество сыгранных видов спорта).Примечание: количество сыгранных видов спорта означает общее количество уникальных видов спорта, например: пол: мужской / сезон: лето / спорт: количество уникальных видов спорта, в которых участвовал мужчина в летней игре.

Ответы [ 2 ]

1 голос
/ 07 мая 2019

Один из способов сделать это - использовать aggregate.Я думаю, что это самый простой метод base.Вы можете использовать и другие функции, но за этой проще всего следовать.

aggregate(Sport ~ Sex + Season, data = data, 
          FUN = function(x) length(unique(x)) )
  Sex Season Sport
1   F Summer    40
2   M Summer    49
3   F Winter    14
4   M Winter    17
0 голосов
/ 07 мая 2019

Да.Base R способен выполнять следующие действия:

answer <- aggregate(formula = Sport ~ Sex + Season,
                    data = data,
                    FUN = length)

Однако при работе с сгруппированными операциями я рекомендую data.table поверх всех других библиотек (даже dplyr).data.table способ сделать это:

data[, nrow(), by = list(Sex, Season)]

Я считаю data.table более кратким, чем pandas, data.frame и dplyr.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...