Pour le #Tidytuesday de cette semaine, nous avons l’occasion de regarder les tournois du Grand Chelem. Financial Times a produite un arcivle qui a couvert l’aspect historique des femmes au tennis. Cet article couvre plus de données que ce qui nous est proposé ici, mais il contient plusieurs visualisation qui vallent la peine d’être vues.
CONTEXTE
Les tournois du Grand Chelem, également appelés majors, sont les quatre événements annuels les plus importants. Ils offrent le plus grand nombre de points de classement, de récompenses, d’attention du public et des médias, la plus grande force et la plus grande taille du terrain, ainsi qu’un plus grand nombre de « meilleurs ». L’épreuve du Grand Chelem comprend l’Open australien mi-janvier, l’Ouverture Française entre fin mai et début juin, Wimbledon en juin-juillet et l’US Open en août-septembre. Chaque tournoi se déroule sur deux Les tournois australien et américain se jouent sur des courts en dur, le français sur terre battue et le Wimbledon sur gazon.
OBJECTIFS
1) Visualiser l’évolution de l’âge au premier grand titre pour les hommes et les femmes
IMPORTER
player_dob <- readr::read_csv("https://raw.githubusercontent.com/rfordatascience/tidytuesday/master/data/2019/2019-04-09/player_dob.csv")
FALSE Parsed with column specification:
FALSE cols( FALSE name = col_character(),
FALSE grand_slam = col_character(),
FALSE date_of_birth = col_date(format = ""),
FALSE date_of_first_title = col_date(format = ""),
FALSE age = col_double()
FALSE )
grand_slams <- readr::read_csv("https://raw.githubusercontent.com/rfordatascience/tidytuesday/master/data/2019/2019-04-09/grand_slams.csv")
FALSE Parsed with column specification:
FALSE cols( FALSE year = col_double(),
FALSE grand_slam = col_character(),
FALSE name = col_character(),
FALSE rolling_win_count = col_double(),
FALSE tournament_date = col_date(format = ""),
FALSE gender = col_character()
FALSE )
grand_slam_timeline <- readr::read_csv("https://raw.githubusercontent.com/rfordatascience/tidytuesday/master/data/2019/2019-04-09/grand_slam_timeline.csv")
FALSE Parsed with column specification:
FALSE cols( FALSE player = col_character(),
FALSE year = col_double(),
FALSE tournament = col_character(),
FALSE outcome = col_character(),
FALSE gender = col_character()
FALSE )
EXPLORER
data_age<-player_dob glimpse(data_age)
## Observations: 105
## Variables: 5
## $ name <chr> "Nancy Richey", "Virginia Wade", "Billie Jea…
## $ grand_slam <chr> "French Open", "US Open", "Wimbledon", "Aust…
## $ date_of_birth <date> 1942-08-23, 1945-07-10, 1943-11-22, 1942-07…
## $ date_of_first_title <date> 1968-06-08, 1968-09-07, 1968-07-05, 1969-01…
## $ age <dbl> 9421, 8460, 8992, 9691, 7249, 7116, 7360, 10…
summary(data_age)
## name grand_slam date_of_birth
## Length:105 Length:105 Min. :1934-11-02
## Class :character Class :character 1st Qu.:1956-03-19
## Mode :character Mode :character Median :1971-08-12
## Mean :1968-10-21
## 3rd Qu.:1981-08-08
## Max. :1997-10-16
##
## date_of_first_title age
## Min. :1968-06-08 Min. : 5961
## 1st Qu.:1978-06-16 1st Qu.: 7512
## Median :1994-10-15 Median : 8286
## Mean :1992-10-28 Mean : 8531
## 3rd Qu.:2004-06-06 3rd Qu.: 9502
## Max. :2018-09-08 Max. :12724
## NA's :3 NA's :3
glimpse(grand_slams)
## Observations: 416
## Variables: 6
## $ year <dbl> 1968, 1968, 1968, 1968, 1969, 1969, 1969, 1969…
## $ grand_slam <chr> "australian_open", "french_open", "wimbledon",…
## $ name <chr> "Billie Jean King", "Nancy Richey", "Billie Je…
## $ rolling_win_count <dbl> 1, 1, 2, 1, 1, 2, 1, 3, 4, 5, 6, 7, 8, 1, 2, 3…
## $ tournament_date <date> 1968-01-10, 1968-06-09, 1968-07-14, 1968-09-0…
## $ gender <chr> "Female", "Female", "Female", "Female", "Femal…
summary(grand_slams)
## year grand_slam name rolling_win_count
## Min. :1968 Length:416 Length:416 Min. : 1.000
## 1st Qu.:1980 Class :character Class :character 1st Qu.: 1.000
## Median :1993 Mode :character Mode :character Median : 4.000
## Mean :1993 Mean : 5.507
## 3rd Qu.:2006 3rd Qu.: 8.000
## Max. :2019 Max. :23.000
## tournament_date gender
## Min. :1968-01-10 Length:416
## 1st Qu.:1979-12-10 Class :character
## Median :1993-03-26 Mode :character
## Mean :1993-04-09
## 3rd Qu.:2006-02-16
## Max. :2019-01-10
Hmisc::describe(data_age$age)
## data_age$age
## n missing distinct Info Mean Gmd .05 .10
## 102 3 102 1 8531 1661 6387 6615
## .25 .50 .75 .90 .95
## 7512 8286 9502 10674 10938
##
## lowest : 5961 6033 6114 6285 6320, highest: 10967 11061 12252 12273 12724
Hmisc::describe(data_age$date_of_first_title)
## data_age$date_of_first_title
## n missing distinct
## 102 3 102
##
## lowest : 1968-06-08 1968-06-09 1968-07-05 1968-07-06 1968-09-07
## highest: 2017-06-10 2017-09-09 2018-01-27 2018-06-09 2018-09-08
Hmisc::describe(grand_slams$tournament_date)
## grand_slams$tournament_date
## n missing distinct
## 416 0 204
##
## lowest : 1968-01-10 1968-06-09 1968-07-14 1968-09-09 1969-01-10
## highest: 2018-01-10 2018-06-09 2018-07-14 2018-09-09 2019-01-10
Hmisc::describe(data_age$grand_slam)
## data_age$grand_slam
## n missing distinct
## 102 3 7
##
## Australian Open (19, 0.186), Australian Open (December) (1, 0.010),
## Australian Open (Jan.) (1, 0.010), Australian Open (January) (1, 0.010),
## French Open (39, 0.382), US Open (24, 0.235), Wimbledon (17, 0.167)
Hmisc::describe(grand_slams$grand_slam)
## grand_slams$grand_slam
## n missing distinct
## 416 0 4
##
## Value australian_open french_open us_open wimbledon
## Frequency 104 104 104 104
## Proportion 0.25 0.25 0.25 0.25
Hmisc::describe(data_age$name)
## data_age$name
## n missing distinct
## 105 0 105
##
## lowest : Adriano Panatta Albert Costa Amélie Mauresmo Ana Ivanovic Anastasia Myskina
## highest: Virginia Wade Vitas Gerulaitis William Bowrey Yannick Noah Yevgeny Kafelnikov
Hmisc::describe(grand_slams$name)
## grand_slams$name
## n missing distinct
## 416 0 105
##
## lowest : Adriano Panatta Albert Costa Amélie Mauresmo Ana Ivanovic Anastasia Myskina
## highest: Virginia Wade Vitas Gerulaitis William Bowrey Yannick Noah Yevgeny Kafelnikov
Hmisc::describe(grand_slams$gender)
## grand_slams$gender
## n missing distinct
## 416 0 2
##
## Value Female Male
## Frequency 208 208
## Proportion 0.5 0.5
Nous disposons de plusieurs variables. Toutefois, pour pouvoir pousser plus l’exploration de ces données, il va falloir travailler un peu les âges car elles sont sotckées sous forme de jour et non d’année. Pour avoir le genre, il faut joindre 2 tables de données par le nom du gagnant, la date du tournois et le titre du tournois. Donc, il faut s’assurer que toutes ces valeurs contenues dans ces colonnes concordent.
PRÉPARER:
gender<-grand_slams%>% #J'ai besion de sélectionner seulement le genre
select(name, gender)%>%
distinct()
data<-data_age%>%
mutate(age_y=round(age/365, digits = 0))%>% #modifier l'age pour l'avoir en année
mutate(tournament_date=date_of_first_title)%>% #avoir le même nom de colonne pour joindre les fichiers
left_join(gender, by="name")%>%
mutate(annee=year(date_of_first_title))%>%
select("name", "gender", "age_y", "date_of_first_title")
glimpse(data) #validation du nombre de ligne des données combinées
FALSE Observations: 105
FALSE Variables: 4
FALSE $ name <chr> "Nancy Richey", "Virginia Wade", "Billie Jea…
FALSE $ gender <chr> "Female", "Female", "Female", "Female", "Fem…
FALSE $ age_y <dbl> 26, 23, 25, 27, 20, 19, 20, 29, 21, 23, 22, …
FALSE $ date_of_first_title <date> 1968-06-08, 1968-09-07, 1968-07-05, 1969-01…
summary(data) #validation des données manquante comme on a fait un left_join
FALSE name gender age_y date_of_first_title
FALSE Length:105 Length:105 Min. :16.0 Min. :1968-06-08
FALSE Class :character Class :character 1st Qu.:21.0 1st Qu.:1978-06-16
FALSE Mode :character Mode :character Median :23.0 Median :1994-10-15
FALSE Mean :23.4 Mean :1992-10-28
FALSE 3rd Qu.:26.0 3rd Qu.:2004-06-06
FALSE Max. :35.0 Max. :2018-09-08
FALSE NA's :3 NA's :3
VISUALISER
gg<-ggplot(data=data, aes(x=date_of_first_title, y=age_y, group=gender, color=gender))
gg<-gg + geom_line(size=2)
gg<- gg +scale_color_manual(values=c("#931328", "#3E7BBC"))
#modifier la légende
gg<-gg + theme(legend.position="top")
#ajuster les étiquettes des axes
gg<-gg + scale_x_date(date_breaks = "10 year", date_labels = "%Y")
#modifier le thème
gg<-gg +theme( panel.border = element_blank(),
panel.background = element_rect(fill = "#FFFFFF", colour = "#FFFFFF"),
plot.background = element_rect(fill = "#FFFFFF", colour = "#FFFFFF"),
panel.grid.major.x= element_line(linetype="dotted", size=0.5, color="#9F9F9F"),
panel.grid.major.y= element_blank(), panel.grid.minor = element_blank(),
axis.line.y = element_blank(),
axis.line.x = element_line(linetype="solid", size=1, color="#9F9F9F"),
axis.ticks.x = element_line(linetype="solid", size=1, color="#9F9F9F"),
axis.ticks.y = element_blank())
#ajouter les titres
gg<-gg + labs( title= "Grand Chelem: Qu'est-ce qu'on peut constater comme tendance???",
subtitle=NULL,
y="Âge moyen à la première victoire",
x="Années")
gg<-gg + theme( plot.title = element_text(hjust=0,size=18, color="#5B5B5B"),
plot.subtitle = element_text(hjust=0,size=12, color="#5B5B5B"),
axis.title.x = element_text(hjust=0.5, size=12,angle=360, color="#5B5B5B"),
axis.title.y = element_text(hjust=0.5, size=12, angle=90,color="#5B5B5B"),
axis.text.y = element_blank(),
axis.text.x = element_text(hjust=0.5, size=8, color="#5B5B5B"))
Avec ce graphique, on peut se faire une idée générale de la tendance de l’age à la première victoire, mais ce n’est pas très clair. Il y a trop de variation dans les données pour que le portrait global soit clair. Pour améliorer le tout, on peut regrouper les données en faisant la moyenne des ages des gagnants sur une période de temps. Disons 10 ans.
Voyons ce que ça donne:
PRÉPARER:
gender<-grand_slams%>% #J'ai besion de sélectionner seulement le genre
select(name, gender)%>%
distinct()
data<-data_age%>%
mutate(age_y=round(age/365, digits = 0))%>% #modifier l'age pour l'avoir en année
mutate(tournament_date=date_of_first_title)%>% #avoir le même nom de colonne pour joindre les fichiers
left_join(gender, by="name")%>%
mutate(annee=year(date_of_first_title))%>%
mutate(decennie=0)%>%
mutate(decennie=ifelse(annee<=1970, 60, decennie))%>%
mutate(decennie=ifelse(annee>1970 & annee<=1980, 70, decennie))%>%
mutate(decennie=ifelse(annee>1980 & annee<=1990, 80, decennie))%>%
mutate(decennie=ifelse(annee>1990 & annee<=2000, 90, decennie))%>%
mutate(decennie=ifelse(annee>2000 & annee<=2010, 00, decennie))%>%
mutate(decennie=ifelse(annee>2010 & annee<=2020, 10, decennie))%>%
group_by(gender, decennie)%>%
summarise(age_moy=mean(age_y, na.rm = TRUE))%>%
filter(!is.na(decennie))
data$decennie<-factor(data$decennie,levels = c(60,70, 80, 90, 00, 10))
glimpse(data) #validation du nombre de ligne des données combinées
FALSE Observations: 12
FALSE Variables: 3
FALSE Groups: gender [2]
FALSE $ gender <chr> "Female", "Female", "Female", "Female", "Female", "Fema…
FALSE $ decennie <fct> 0, 10, 60, 70, 80, 90, 0, 10, 60, 70, 80, 90 FALSE $ age_moy <dbl> 22.77778, 25.69231, 25.25000, 21.55556, 18.20000, 21.00…
summary(data) #validation des données manquante comme on a fait un left_join
FALSE gender decennie age_moy
FALSE Length:12 60:2 Min. :18.20
FALSE Class :character 70:2 1st Qu.:21.82
FALSE Mode :character 80:2 Median :23.48
FALSE 90:2 Mean :23.53
FALSE 0 :2 3rd Qu.:25.36
FALSE 10:2 Max. :27.80
VISUALISER
gg<-ggplot(data=data, aes(x=decennie, y=age_moy, group=gender, color=gender))
gg<-gg + geom_line(size=3)
gg<-gg + geom_point(size=6)
gg<- gg +scale_color_manual(values=c("#931328", "#3E7BBC"))
gg<-gg + geom_point(size=5, color="#FFFFFF")
#Ajouter les étiquettes de données
gg<-gg + geom_text(data=data, aes(x=decennie, y=age_moy, label=round(age_moy, digits=0)), size=2.75, vjust=0.5, family="Calibri")
gg<- gg +scale_color_manual(values=c("#931328", "#3E7BBC"))
gg<-gg + annotate(geom="text", x=1,y=23, label="Femmes", color="#931328", size=4, hjust=0.5, fontface="bold")
gg<-gg + annotate(geom="text", x=1,y=30, label="Hommes", color="#3E7BBC", size=4, hjust=0.5, fontface="bold")
#modifier la légende gg<-gg + theme(legend.position="none")
#ajuster les étiquettes des axes
gg<-gg + scale_y_continuous(breaks=seq(15, 35, 5),limits = c(15, 35))
#modifier le thème
gg<-gg +theme( panel.border = element_blank(),
panel.background = element_rect(fill = "#FFFFFF", colour = "#FFFFFF"),
plot.background = element_rect(fill = "#FFFFFF", colour = "#FFFFFF"),
panel.grid.major.x= element_line(linetype="dotted", size=0.5, color="#9F9F9F"),
panel.grid.major.y= element_blank(),
panel.grid.minor = element_blank(), axis.line.y = element_blank(),
axis.line.x = element_line(linetype="solid", size=1, color="#9F9F9F"),
axis.ticks.x = element_line(linetype="solid", size=1, color="#9F9F9F"),
axis.ticks.y = element_blank())
#ajouter les titres gg<-gg + labs(title= "Grand Chelem: Qu'est-ce qui c'est passé dans les années 80?",
subtitle="L'âge moyen à laquel les joueurs ont remportés leur premier titre est passé de 28 à 22 ans pour les\nhommes et de 25 à 18 ans pour les femmes entre les années 60 et les années 80. L'age moyen est\nrevenu à 27 ans pour les hommes et 26 ans pour les femmes dans les anées 2010",
y="Âge moyen à la première victoire",
x="Années")
gg<-gg + theme(plot.title = element_text(hjust=0,size=20, color="#5B5B5B"),
plot.subtitle = element_text(hjust=0,size=12, color="#5B5B5B"),
axis.title.x = element_text(hjust=0.5, size=12,angle=360, color="#5B5B5B"),
axis.title.y = element_text(hjust=0.5, size=12, angle=90,color="#5B5B5B"),
axis.text.y = element_blank(),
axis.text.x = element_text(hjust=0.5, size=8, color="#5B5B5B"))
Ce qu’on peut observer:
- L’âge moyen de la première victoire varie en fonction du temps et était à son minimun dans les années 80.
- J’ai regroupé les âges moyens pour les hommes et les femmes par période de 10 ans pour pouvoir voir un tendances dans les données. Faire afficher les données de toutes les années individuellement ne nous montrait aucune tendance claire.
- Il y a une différence entre les hommes et les femmes, les femmes gagnent généralement leur premier titre plus jeune ques les hommes.
- Par contre, j’ai l’impression qu’il nous manque des éléments pour que l’histoire soit claire. Pourquoi est-ce que l’age à la première victoire diminue dans les années 80?
Est-ce que le nombre de joueurs qu’on considère par décénie est le même?
PRÉPARER:
gender<-grand_slams%>% #J'ai besion de sélectionner seulement le genre
select(name, gender)%>%
distinct()
data<-data_age%>%
mutate(age_y=round(age/365, digits = 0))%>% #modifier l'age pour l'avoir en année
mutate(tournament_date=date_of_first_title)%>% #avoir le même nom de colonne pour joindre les fichiers
left_join(gender, by="name")%>%
mutate(annee=year(date_of_first_title))%>%
mutate(decennie=0)%>%
mutate(decennie=ifelse(annee<=1970, 60, decennie))%>%
mutate(decennie=ifelse(annee>1970 & annee<=1980, 70, decennie))%>%
mutate(decennie=ifelse(annee>1980 & annee<=1990, 80, decennie))%>%
mutate(decennie=ifelse(annee>1990 & annee<=2000, 90, decennie))%>%
mutate(decennie=ifelse(annee>2000 & annee<=2010, 00, decennie))%>%
mutate(decennie=ifelse(annee>2010 & annee<=2020, 10, decennie))
by(data, data$decennie, summary)
FALSE data$decennie: 0
FALSE name grand_slam date_of_birth
FALSE Length:20 Length:20 Min. :1971-09-13
FALSE Class :character Class :character 1st Qu.:1979-05-14
FALSE Mode :character Mode :character Median :1981-07-23
FALSE Mean :1981-09-06
FALSE 3rd Qu.:1985-09-20
FALSE Max. :1988-09-23
FALSE date_of_first_title age age_y tournament_date
FALSE Min. :2001-01-27 Min. : 6285 Min. :17.00 Min. :2001-01-27
FALSE 1st Qu.:2003-03-08 1st Qu.: 7547 1st Qu.:21.00 1st Qu.:2003-03-08
FALSE Median :2004-06-06 Median : 8066 Median :22.00 Median :2004-06-06
FALSE Mean :2004-09-26 Mean : 8421 Mean :23.15 Mean :2004-09-26
FALSE 3rd Qu.:2005-10-15 3rd Qu.: 9410 3rd Qu.:26.25 3rd Qu.:2005-10-15
FALSE Max. :2010-06-05 Max. :10939 Max. :30.00 Max. :2010-06-05
FALSE gender annee decennie
FALSE Length:20 Min. :2001 Min. :0
FALSE Class :character 1st Qu.:2003 1st Qu.:0
FALSE Mode :character Median :2004 Median :0
FALSE Mean :2004 Mean :0
FALSE 3rd Qu.:2005 3rd Qu.:0
FALSE Max. :2010 Max. :0
FALSE --------------------------------------------------------
FALSE data$decennie: 10
FALSE name grand_slam date_of_birth
FALSE Length:16 Length:16 Min. :1982-02-25
FALSE Class :character Class :character 1st Qu.:1985-02-11
FALSE Mode :character Mode :character Median :1989-02-28
FALSE Mean :1989-03-08
FALSE 3rd Qu.:1992-02-09
FALSE Max. :1997-10-16
FALSE date_of_first_title age age_y tournament_date
FALSE Min. :2011-06-04 Min. : 7307 Min. :20.00 Min. :2011-06-04
FALSE 1st Qu.:2012-07-15 1st Qu.: 8260 1st Qu.:23.00 1st Qu.:2012-07-15
FALSE Median :2015-03-11 Median : 9614 Median :26.50 Median :2015-03-11
FALSE Mean :2015-01-04 Mean : 9434 Mean :25.88 Mean :2015-01-04
FALSE 3rd Qu.:2017-07-02 3rd Qu.:10305 3rd Qu.:28.25 3rd Qu.:2017-07-02
FALSE Max. :2018-09-08 Max. :12252 Max. :34.00 Max. :2018-09-08
FALSE gender annee decennie
FALSE Length:16 Min. :2011 Min. :10
FALSE Class :character 1st Qu.:2012 1st Qu.:10
FALSE Mode :character Median :2014 Median :10
FALSE Mean :2015 Mean :10
FALSE 3rd Qu.:2017 3rd Qu.:10
FALSE Max. :2018 Max. :10
FALSE --------------------------------------------------------
FALSE data$decennie: 60
FALSE name grand_slam date_of_birth
FALSE Length:9 Length:9 Min. :1934-11-02
FALSE Class :character Class :character 1st Qu.:1942-07-16
FALSE Mode :character Mode :character Median :1943-07-10
FALSE Mean :1942-06-16
FALSE 3rd Qu.:1944-05-23
FALSE Max. :1946-03-01
FALSE date_of_first_title age age_y tournament_date
FALSE Min. :1968-06-08 Min. : 8460 Min. :23.00 Min. :1968-06-08
FALSE 1st Qu.:1968-07-05 1st Qu.: 8992 1st Qu.:25.00 1st Qu.:1968-07-05
FALSE Median :1968-09-07 Median : 9421 Median :26.00 Median :1968-09-07
FALSE Mean :1969-01-11 Mean : 9706 Mean :26.67 Mean :1969-01-11
FALSE 3rd Qu.:1969-01-26 3rd Qu.: 9691 3rd Qu.:27.00 3rd Qu.:1969-01-26
FALSE Max. :1970-07-04 Max. :12273 Max. :34.00 Max. :1970-07-04
FALSE gender annee decennie
FALSE Length:9 Min. :1968 Min. :60
FALSE Class :character 1st Qu.:1968 1st Qu.:60
FALSE Mode :character Median :1968 Median :60
FALSE Mean :1969 Mean :60
FALSE 3rd Qu.:1969 3rd Qu.:60
FALSE Max. :1970 Max. :60
FALSE --------------------------------------------------------
FALSE data$decennie: 70
FALSE name grand_slam date_of_birth
FALSE Length:21 Length:21 Min. :1937-08-03
FALSE Class :character Class :character 1st Qu.:1950-07-09
FALSE Mode :character Mode :character Median :1954-06-24
FALSE Mean :1952-12-04
FALSE 3rd Qu.:1956-06-06
FALSE Max. :1962-12-12
FALSE date_of_first_title age age_y tournament_date
FALSE Min. :1971-06-05 Min. : 6114 Min. :17.00 Min. :1971-06-05
FALSE 1st Qu.:1974-06-15 1st Qu.: 7510 1st Qu.:21.00 1st Qu.:1974-06-15
FALSE Median :1976-06-14 Median : 8309 Median :23.00 Median :1976-06-14
FALSE Mean :1976-02-20 Mean : 8478 Mean :23.24 Mean :1976-02-20
FALSE 3rd Qu.:1978-01-01 3rd Qu.: 9219 3rd Qu.:25.00 3rd Qu.:1978-01-01
FALSE Max. :1980-01-01 Max. :12724 Max. :35.00 Max. :1980-01-01
FALSE gender annee decennie
FALSE Length:21 Min. :1971 Min. :70
FALSE Class :character 1st Qu.:1974 1st Qu.:70
FALSE Mode :character Median :1976 Median :70
FALSE Mean :1976 Mean :70
FALSE 3rd Qu.:1978 3rd Qu.:70
FALSE Max. :1980 Max. :70
FALSE --------------------------------------------------------
FALSE data$decennie: 80
FALSE name grand_slam date_of_birth
FALSE Length:16 Length:16 Min. :1954-12-23
FALSE Class :character Class :character 1st Qu.:1960-04-30
FALSE Mode :character Mode :character Median :1965-09-22
FALSE Mean :1965-08-05
FALSE 3rd Qu.:1970-09-06
FALSE Max. :1973-12-02
FALSE date_of_first_title age age_y tournament_date
FALSE Min. :1981-01-03 Min. : 6033 Min. :17.00 Min. :1981-01-03
FALSE 1st Qu.:1983-03-15 1st Qu.: 6486 1st Qu.:18.00 1st Qu.:1983-03-15
FALSE Median :1986-09-07 Median : 7116 Median :19.50 Median :1986-09-07
FALSE Mean :1986-05-15 Mean : 7588 Mean :20.75 Mean :1986-05-15
FALSE 3rd Qu.:1989-09-10 3rd Qu.: 8490 3rd Qu.:23.25 3rd Qu.:1989-09-10
FALSE Max. :1990-09-10 Max. :11061 Max. :30.00 Max. :1990-09-10
FALSE gender annee decennie
FALSE Length:16 Min. :1981 Min. :80
FALSE Class :character 1st Qu.:1983 1st Qu.:80
FALSE Mode :character Median :1986 Median :80
FALSE Mean :1986 Mean :80
FALSE 3rd Qu.:1989 3rd Qu.:80
FALSE Max. :1990 Max. :80
FALSE --------------------------------------------------------
FALSE data$decennie: 90
FALSE name grand_slam date_of_birth
FALSE Length:20 Length:20 Min. :1967-10-02
FALSE Class :character Class :character 1st Qu.:1970-07-20
FALSE Mode :character Mode :character Median :1973-07-24
FALSE Mean :1974-02-08
FALSE 3rd Qu.:1976-12-03
FALSE Max. :1981-09-26
FALSE date_of_first_title age age_y tournament_date
FALSE Min. :1991-06-10 Min. : 5961 Min. :16.00 Min. :1991-06-10
FALSE 1st Qu.:1994-12-06 1st Qu.: 7481 1st Qu.:20.75 1st Qu.:1994-12-06
FALSE Median :1997-04-01 Median : 8108 Median :22.00 Median :1997-04-01
FALSE Mean :1996-07-22 Mean : 8200 Mean :22.50 Mean :1996-07-22
FALSE 3rd Qu.:1998-06-14 3rd Qu.: 8469 3rd Qu.:23.50 3rd Qu.:1998-06-14
FALSE Max. :2000-09-11 Max. :10967 Max. :30.00 Max. :2000-09-11
FALSE gender annee decennie
FALSE Length:20 Min. :1991 Min. :90
FALSE Class :character 1st Qu.:1995 1st Qu.:90
FALSE Mode :character Median :1997 Median :90
FALSE Mean :1996 Mean :90
FALSE 3rd Qu.:1998 3rd Qu.:90
FALSE Max. :2000 Max. :90
Donc,
années 60 = 9 joueurs
années 70 = 21 joueurs
années 80 = 16 joueurs
années 90 = 20 joueurs
années 00 = 20 joueurs
années 10 = 16 joueurs
Je pense qu’on peut seulement suspecter les années 60 comme étant aberhant. Rien ne laisse suspecter d’explication pour notre cas des années 80.
Ensuite, comment varie le nombre de nouveau gagnant par décénnie?
PRÉPARER:
gender<-grand_slams%>%
select(name, gender, year, rolling_win_count)%>%
mutate(annee=year)%>%
mutate(decennie=0)%>%
mutate(decennie=ifelse(annee<=1970, 60, decennie))%>%
mutate(decennie=ifelse(annee>1970 & annee<=1980, 70, decennie))%>%
mutate(decennie=ifelse(annee>1980 & annee<=1990, 80, decennie))%>%
mutate(decennie=ifelse(annee>1990 & annee<=2000, 90, decennie))%>%
mutate(decennie=ifelse(annee>2000 & annee<=2010, 00, decennie))%>%
mutate(decennie=ifelse(annee>2010 & annee<=2020, 10, decennie))%>%
filter(rolling_win_count==1)%>% group_by(gender, decennie)%>%
summarise(somme_new=sum(rolling_win_count, na.rm = TRUE))%>%
filter(!is.na(decennie))%>%
select(decennie, gender, somme_new)
gender$decennie<-factor(gender$decennie,levels = c(60,70, 80, 90, 00, 10))
glimpse(gender) #validation du nombre de ligne des données combinées
FALSE Observations: 12
FALSE Variables: 3
FALSE Groups: gender [2]
FALSE $ decennie <fct> 0, 10, 60, 70, 80, 90, 0, 10, 60, 70, 80, 90
FALSE $ gender <chr> "Female", "Female", "Female", "Female", "Female", "Fem…
FALSE $ somme_new <dbl> 9, 13, 5, 11, 4, 8, 11, 3, 6, 13, 10, 12
summary(gender) #validation des données manquante comme on a fait un left_join
FALSE decennie gender somme_new
FALSE 60:2 Length:12 Min. : 3.00
FALSE 70:2 Class :character 1st Qu.: 5.75
FALSE 80:2 Mode :character Median : 9.50
FALSE 90:2 Mean : 8.75
FALSE 0 :2 3rd Qu.:11.25
FALSE 10:2 Max. :13.00
VISUALISER
gg<-ggplot(data=gender, aes(x=decennie, y=somme_new, group=gender, color=gender))
gg<-gg + geom_line(size=3)
gg<-gg + geom_point(size=6)
gg<- gg +scale_color_manual(values=c("#931328", "#3E7BBC"))
gg<-gg + geom_point(size=5, color="#FFFFFF")
#Ajouter les étiquettes de données
gg<-gg + geom_text(data=gender, aes(x=decennie, y=somme_new, label=round(somme_new, digits=0)), size=2.75, vjust=0.5, family="Calibri")
gg<- gg +scale_color_manual(values=c("#931328", "#3E7BBC"))
gg<-gg + annotate(geom="text", x=1,y=4, label="Femmes", color="#931328", size=4, hjust=1, fontface="bold")
gg<-gg + annotate(geom="text", x=1,y=7, label="Hommes", color="#3E7BBC", size=4, hjust=1, fontface="bold")
#modifier la légende
gg<-gg + theme(legend.position="none")
#ajuster les étiquettes des axes
gg<-gg + scale_y_continuous(breaks=seq(0, 20, 5),limits = c(0, 20))
#modifier le thème
gg<-gg +theme( panel.border = element_blank(),
panel.background = element_rect(fill = "#FFFFFF", colour = "#FFFFFF"),
plot.background = element_rect(fill = "#FFFFFF", colour = "#FFFFFF"),
panel.grid.major.x= element_line(linetype="dotted", size=0.5, color="#9F9F9F"),
panel.grid.major.y= element_blank(), panel.grid.minor = element_blank(),
axis.line.y = element_blank(),
axis.line.x = element_line(linetype="solid", size=1, color="#9F9F9F"),
axis.ticks.x = element_line(linetype="solid", size=1, color="#9F9F9F"),
axis.ticks.y = element_blank())
#ajouter les titres
gg<-gg + labs( title= "Grand Chelem: Comment à évoluer le nombre de nouveaux gagnant?",
subtitle=NULL,
y="Nombre de nouveaux gagnants",
x="Années")
gg<-gg + theme(plot.title = element_text(hjust=0,size=18, color="#5B5B5B"),
plot.subtitle = element_text(hjust=0,size=12, color="#5B5B5B"),
axis.title.x = element_text(hjust=0.5, size=12,angle=360, color="#5B5B5B"),
axis.title.y = element_text(hjust=0.5, size=12, angle=90,color="#5B5B5B"),
axis.text.y = element_blank(),
axis.text.x = element_text(hjust=0.5, size=8, color="#5B5B5B"))
Peu de nouveau gagnant du côté des femmes dans les années 80 et une moins forte diminution du côté des hommes. Ça va à l’encontre de ce qu’on a constaté pour l’age à la première victoire…
Dernière question, comment évolu l’age moyen de tous les participants par décénnie?
PRÉPARER:
players<-grand_slam_timeline%>%
filter(!outcome %in% "Absent")%>%
mutate(name=player)%>%
mutate(annee=year)%>%
mutate(decennie=0)%>%
mutate(decennie=ifelse(annee<=1970, 60, decennie))%>%
mutate(decennie=ifelse(annee>1970 & annee<=1980, 70, decennie))%>%
mutate(decennie=ifelse(annee>1980 & annee<=1990, 80, decennie))%>%
mutate(decennie=ifelse(annee>1990 & annee<=2000, 90, decennie))%>%
mutate(decennie=ifelse(annee>2000 & annee<=2010, 00, decennie))%>%
mutate(decennie=ifelse(annee>2010 & annee<=2020, 10, decennie))%>%
select(name, gender, decennie)%>%
left_join(data_age, by="name")
Il semblerait qu’on ne dispose pas de la date de naissance de tous les joueurs, je suspecte qu’on a pas l’information pour les joueurs qui n’ont pas gagné…
Donc, les données ne nous permettent pas de comprendre pourquoi est-ce que l’age moyen à la première victoire est inérieur pour les années 80.
Tu veux en apprendre plus sur ma démarche? Va écouter l’épisode de podcast dans lequel j’explique mes réflexions pour arriver à ce résultat.
Pingback: Podcast ADV #4: Quand on s’amuse à fouiller dans les données pour comprendre | Johanie Fournier, agr.
Pingback: ADV4 - Quand on s'amuse à fouiller dans les données pour comprendre | Johanie Fournier, agr.
Pingback: ADV7 - Qu'est-ce qu'on fait quand ce qu'on pensait visualiser dans les données ne donne rien de bon? | Johanie Fournier, agr.