Dplyr:计算组数并将其变异为表格

时间:2019-05-06 15:50:57

标签: r dplyr

数据集在Kaggle上可用: https://www.kaggle.com/heesoo37/120-years-of-olympic-history-athletes-and-results/

我需要使用dplyr创建一个对象,其中每个对象都包含 SexSeason的组合,即数据集中不同运动项的数量。

我首先按性别,季节和运动对数据集进行分组,并对它们进行汇总,这为我提供了一个表格,该表包含太多行,列为性别,季节和运动。这是不对的。然后,我在summary函数中使用了n(),它返回了相同的结果,但只增加了一列:人数

final_group<- group_by(dataset, Sex, Season)
final_group_1 <- summarise(final_group)

然后我尝试:

final_group<- group_by(dataset, Sex, Season)
final_group_1 <- summarise(final_group, n())

都没有返回我想要的东西。

我只想要4行,每个性别在夏季或冬季进行的所有运动的总和,如下例所示:

Sex       Season        Num_sports
Male      summer           ( all sports played by males in the summer )
Male      winter           ( all sports played by males in the winter )
Female    summer           ( all sports played by females in the summer )
Female    winter           ( all sports played by females in the winter )

1 个答案:

答案 0 :(得分:0)

没有reprex,就不可能确切知道数据的外观,但是这样的话应该会为您提供理想的答案:

library(tidyverse)

dat <- read_csv("~/Desktop/athlete_events.csv")

dat %>% 
    count(Sex, Season)
#> # A tibble: 4 x 3
#>   Sex   Season      n
#>   <chr> <chr>   <int>
#> 1 F     Summer  59443
#> 2 F     Winter  15079
#> 3 M     Summer 163109
#> 4 M     Winter  33485

如果您想要每个季节男女参加的独特运动数量,可以执行以下操作:

dat %>% 
    group_by(Sex, Season) %>% 
    summarise(num_sports_played = length(unique(Sport)))
#> # A tibble: 4 x 3
#> # Groups:   Sex [2]
#>   Sex   Season num_sports_played
#>   <chr> <chr>              <int>
#> 1 F     Summer                40
#> 2 F     Winter                14
#> 3 M     Summer                49
#> 4 M     Winter                17

reprex package(v0.2.1)于2019-05-06创建