-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy path06-manipuler_plusieurs_tables.Rmd
75 lines (43 loc) · 2.7 KB
/
06-manipuler_plusieurs_tables.Rmd
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
# Manipuler plusieurs tables
## Concepts généraux
Le package `{dplyr}` possède également plusieurs fonctions permettant de travailler sur deux tables.
On va pouvoir regrouper ces fonctions en plusieurs catégories de manipulations :
- pour fusionner des informations de deux tables entre elles : **jointures transformantes**,
- pour sélectionner des observations d'une table en fonction de celles présentes dans une autre table : **jointures filtrantes**,
- pour traiter deux tables ayant les mêmes colonnes et sélectionner sur celles-ci des observations de l'une et l'autre : **opérations ensemblistes**,
- des manipulations visant à additionner deux tables ensembles : **assemblages**.
<center></center>
## Principaux exemples de jointure
Dans la capture ci-dessus, les opérations de jointure supposent que la colonne `x1` est présente dans `a` et `b`.
Voici quelques exemples détaillant les principaux cas rencontrés :
```{r eval=FALSE, include=TRUE}
# jointure avec des noms de colonnes différentes pour la clé
# `colonne_c` est une colonne de data_a et `colonne_d` est une colonne de data_b
left_join(data_a, data_b, by = c("colonne_c" = "colonne_d"))
# jointure sur deux colonnes
# `colonne_e` et `colonne_f` sont des colonnes de data_a et de data_b
left_join(data_a, data_b, by = c("colonne_e", "colonne_f"))
# jointure sur deux colonnes avec noms différents
# `colonne_g`et `colonne_i` sont des colonnes de data_a, `colonne_h` et `colonne_j` sont des colonnes de data_b
left_join(data_a, data_b, by = c("colonne_g" = "colonne_h", "colonne_i" = "colonne_j"))
```
## Paramétrage du suffixe pour des colonnes présentes dans les deux tables
Dans le cas où des colonnes (hors jointure) sont présentes dans `data_a` et `data_b`, ces colonnes seront suffixées par :
- `.x` pour les colonnes provenant de `data_a`
- `.y` pour les colonnes provenant de `data_b`
Il est possible de modifier ces suffixes en passant le paramètre `suffix = c("_a", "_b")` au moment de la jointure.
```{r eval=FALSE, include=TRUE}
left_join(data_a, data_b, by = c("colonne_c" = "colonne_d"), suffix = c("_a", "_b"))
```
## Animations de Garrick Abenduie
Les animations proviennent de : https://www.garrickadenbuie.com/project/tidyexplain/
### Inner join

### Left join

### Pivot longuer / Pivot wider

## Exercice 5

```{r mod2_exo5, child=savoirfR::charge_exo("m2", "exo5.rmd"), echo=FALSE}
```