0. Charger le package prenoms
library(prenoms)
1. Invoquer le jeu de données prenoms
de ce package
data(prenoms, package = "prenoms")
2. Examiner la structure de prenoms
avec glimpse
glimpse(prenoms)
## Observations: 3,547,289
## Variables: 6
## $ year <int> 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 1900, 190...
## $ sex <chr> "F", "F", "F", "F", "F", "F", "F", "F", "F", "F", "F", "F...
## $ name <chr> "Adèle", "Adrienne", "Aimée", "Alice", "Alphonsine", "Amé...
## $ n <int> 5, 9, 7, 24, 5, 8, 5, 6, 21, 12, 21, 6, 5, 5, 17, 3, 5, 1...
## $ dpt <chr> "01", "01", "01", "01", "01", "01", "01", "01", "01", "01...
## $ prop <dbl> 0.0015777848, 0.0028400126, 0.0022088987, 0.0075733670, 0...
3. Filtrer les prénoms de filles donnés en 2011 à l’échelle départementale et trier par ordre croissant
prenoms %>% filter(sex == "F", year == 2011) %>% arrange(n)
## # A tibble: 27,517 x 6
## year sex name n dpt prop
## <int> <chr> <chr> <int> <chr> <dbl>
## 1 2011 F Alia 1 2A 0.001190476
## 2 2011 F Amandine 1 2A 0.001190476
## 3 2011 F Amina 1 2A 0.001190476
## 4 2011 F Andrea 1 2A 0.001190476
## 5 2011 F Anghjula 1 2A 0.001190476
## 6 2011 F Antonia 1 2A 0.001190476
## 7 2011 F Asma 1 2A 0.001190476
## 8 2011 F Cassandra 1 2A 0.001190476
## 9 2011 F Cassandre 1 2A 0.001190476
## 10 2011 F Charlotte 1 2A 0.001190476
## # ... with 27,507 more rows
4. Combien de fois votre prénom a été donné dans votre département de naissance votre année de naissance ?
prenoms %>% filter(year == 1985, name == "Diane", dpt == "93")
## # A tibble: 1 x 6
## year sex name n dpt prop
## <int> <chr> <chr> <int> <chr> <dbl>
## 1 1985 F Diane 14 93 0.0007948674
5. Quel est le prénom de fille le plus populaire en 1950 à Paris ?
prenoms %>% filter(sex == "F", year == 1950, dpt == "75") %>% arrange(desc(n)) %>% head(1)
## # A tibble: 1 x 6
## year sex name n dpt prop
## <int> <chr> <chr> <int> <chr> <dbl>
## 1 1950 F Martine 1115 75 0.03699403
# un poil plus élégant
prenoms %>% filter(sex == "F", year == 1950, dpt == "75") %>% slice(which.max(n))
## # A tibble: 1 x 6
## year sex name n dpt prop
## <int> <chr> <chr> <int> <chr> <dbl>
## 1 1950 F Martine 1115 75 0.03699403
6. Les 10 prénoms les plus donnés à l’échelle départementale à travers les années ?
prenoms %>% top_n(10, n)
## # A tibble: 10 x 6
## year sex name n dpt prop
## <int> <chr> <chr> <int> <chr> <dbl>
## 1 1953 F Marie 4261 97 0.1424798
## 2 1956 F Marie 4183 97 0.1300684
## 3 1957 F Marie 4637 97 0.1415662
## 4 1958 F Marie 4646 97 0.1405621
## 5 1960 F Marie 4203 97 0.1220773
## 6 1961 F Marie 4275 97 0.1248686
## 7 1962 F Marie 4455 97 0.1242712
## 8 1964 F Marie 4291 97 0.1185949
## 9 1965 F Marie 4345 97 0.1182925
## 10 1966 F Marie 4129 97 0.1140860
7. Le prénom de garçon et de fille le plus donné par année et à l’echelle du département ?
prenoms %>% group_by(sex, year, dpt) %>%
top_n(1,n)
## # A tibble: 23,091 x 6
## # Groups: sex, year, dpt [22,504]
## year sex name n dpt prop
## <int> <chr> <chr> <int> <chr> <dbl>
## 1 1900 F Marie 639 01 0.20164090
## 2 1900 M Jean 144 01 0.04544020
## 3 1900 F Marie 319 02 0.06330621
## 4 1900 M André 138 02 0.02738639
## 5 1900 F Marie 645 03 0.16572456
## 6 1900 M Jean 230 03 0.05909558
## 7 1900 F Marie 146 04 0.14792300
## 8 1900 M Louis 40 04 0.04052685
## 9 1900 F Marie 155 05 0.15720081
## 10 1900 M Joseph 50 05 0.05070994
## # ... with 23,081 more rows
# ou
prenoms %>% group_by(sex, year, dpt) %>%
filter(n == max(n))
## # A tibble: 23,091 x 6
## # Groups: sex, year, dpt [22,504]
## year sex name n dpt prop
## <int> <chr> <chr> <int> <chr> <dbl>
## 1 1900 F Marie 639 01 0.20164090
## 2 1900 M Jean 144 01 0.04544020
## 3 1900 F Marie 319 02 0.06330621
## 4 1900 M André 138 02 0.02738639
## 5 1900 F Marie 645 03 0.16572456
## 6 1900 M Jean 230 03 0.05909558
## 7 1900 F Marie 146 04 0.14792300
## 8 1900 M Louis 40 04 0.04052685
## 9 1900 F Marie 155 05 0.15720081
## 10 1900 M Joseph 50 05 0.05070994
## # ... with 23,081 more rows
8. Le prénom de garçon et de fille le plus donné par année à l’échelle nationale ?
prenoms %>% group_by(sex, year, name) %>%
summarise(n = sum(n)) %>%
filter(n == max(n))
## # A tibble: 232 x 4
## # Groups: sex, year [232]
## sex year name n
## <chr> <int> <chr> <int>
## 1 F 1900 Marie 48722
## 2 F 1901 Marie 52164
## 3 F 1902 Marie 51867
## 4 F 1903 Marie 50442
## 5 F 1904 Marie 50149
## 6 F 1905 Marie 48995
## 7 F 1906 Marie 48462
## 8 F 1907 Marie 46064
## 9 F 1908 Marie 47476
## 10 F 1909 Marie 46415
## # ... with 222 more rows
# ou
prenoms %>% group_by(sex, year, name) %>%
summarise(n = sum(n)) %>%
top_n(1,n)
## # A tibble: 232 x 4
## # Groups: sex, year [232]
## sex year name n
## <chr> <int> <chr> <int>
## 1 F 1900 Marie 48722
## 2 F 1901 Marie 52164
## 3 F 1902 Marie 51867
## 4 F 1903 Marie 50442
## 5 F 1904 Marie 50149
## 6 F 1905 Marie 48995
## 7 F 1906 Marie 48462
## 8 F 1907 Marie 46064
## 9 F 1908 Marie 47476
## 10 F 1909 Marie 46415
## # ... with 222 more rows
9. Suggérer 2 prénoms féminins et 2 prénoms masculins éligibles, ainsi que 2 prénoms féminins et 2 prénoms masculins non éligibles. Le tableau contient les variables name | sex | eligible. Fusionner les 2 jeux de données. Stocker dans prenoms2
a_merger <- tribble(
~name, ~sex, ~eligible,
"Gwendoline", "F", "candidat",
"Louise", "F", "candidat",
"Louis", "M", "candidat",
"Enguerrand", "M", "candidat",
"Diane", "F", "exclus",
"Gertrude", "F", "exclus",
"Emmanuel", "M", "exclus",
"Donald", "M", "exclus"
)
prenoms2 <- prenoms %>% left_join(a_merger)
## Joining, by = c("sex", "name")
10. Filter les prénoms féminins candidats retenus, calculer la somme par prénom et par année, trier par année. En faire un graphe ggplot2 ?
candidats <- prenoms2 %>%
filter(eligible == "candidat" & sex == "F") %>%
group_by(name, year, sex) %>%
summarise( n = sum(n) ) %>%
arrange( year )
library(ggplot2)
ggplot( candidats, aes(x = year, y = n, color = name) ) +
geom_line() +
scale_x_continuous( breaks = seq(1900, 2020, by = 10) )
11. Construire le tableau qui contient pour chaque année le nombre de filles et de garçons. Les variables sont year | F | M
prenoms %>% group_by(sex,year) %>%
summarise(n = sum(n)) %>%
spread(sex, n)
## # A tibble: 116 x 3
## year F M
## * <int> <int> <int>
## 1 1900 223263 167203
## 2 1901 243159 185452
## 3 1902 246931 193772
## 4 1903 246802 196764
## 5 1904 250274 203427
## 6 1905 252793 211170
## 7 1906 257972 217782
## 8 1907 255570 219727
## 9 1908 266340 232259
## 10 1909 264860 234971
## # ... with 106 more rows
12. Construire le tableau qui compte le nombre de prénoms différents par sexe et année. En faire un graphe ?
prenoms %>%
group_by(sex, year) %>%
summarise( n = length(unique(name)) ) %>%
ggplot( aes(year, n, colour = sex ) ) + geom_line()