Суммирование определенного столбца с помощью dplyr - PullRequest
0 голосов
/ 07 мая 2019

Для моего задания мне нужно создать объект, который содержит, для каждого комбинация Sex и Season, количество различных видов спорта в наборе данных olympics. Столбцы этого объекта должны называться Competitor_Sex, Olympic_Season и Num_Sports, соответственно.

Это то, что у меня есть на данный момент:

object <- olympics %>%
  group_by(Sex, Season) %>%
  summarise(Num_Sports = ???)

У меня проблемы с определением третьего столбца, в котором указано количество видов спорта. Мои данные выглядят так:

structure(list(Name = c("A Lamusi", "Juhamatti Tapio Aaltonen", 
"Andreea Aanei", "Jamale (Djamel-) Aarrass (Ahrass-)", "Nstor Abad Sanjun"
), Sex = c("M", "M", "F", "M", "M"), Age = c(23L, 28L, 22L, 30L, 
23L), Height = c(170L, 184L, 170L, 187L, 167L), Weight = c(60, 
85, 125, 76, 64), Team = c("China", "Finland", "Romania", "France", 
"Spain"), NOC = c("CHN", "FIN", "ROU", "FRA", "ESP"), Games = c("2012 Summer", 
"2014 Winter", "2016 Summer", "2012 Summer", "2016 Summer"), 
    Year = c(2012L, 2014L, 2016L, 2012L, 2016L), Season = c("Summer", 
    "Winter", "Summer", "Summer", "Summer"), City = c("London", 
    "Sochi", "Rio de Janeiro", "London", "Rio de Janeiro"), Sport = c("Judo", 
    "Ice Hockey", "Weightlifting", "Athletics", "Gymnastics"), 
    Event = c("Judo Men's Extra-Lightweight", "Ice Hockey Men's Ice Hockey", 
    "Weightlifting Women's Super-Heavyweight", "Athletics Men's 1,500 metres", 
    "Gymnastics Men's Individual All-Around"), Medal = c(NA, 
    "Bronze", NA, NA, NA)), row.names = c("1", "2", "3", "4", 
"5"), class = "data.frame")

Вероятно, это решается простым способом. Может ли кто-нибудь помочь мне? Был бы оценен много!

С наилучшими пожеланиями,

Ответы [ 2 ]

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

Вы можете использовать эквивалент length(unique( от dplyr: n_distinct:

olympics %>% 
  group_by(Sex, Season) %>% 
  summarise(Sports = n_distinct(Sport)) %>%
  rename(Competitor_Sex = Sex, Olympic_Season = Season) # To rename the columns
1 голос
/ 07 мая 2019

Группировка дважды должна работать:

olympics %>% 
  group_by(Sex, Season, Sport) %>% 
  summarise(n()) %>% 
  group_by(Sex, Season) %>%
  summarise(n())
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...