-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathwrangle.Rmd
112 lines (78 loc) · 2.36 KB
/
wrangle.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
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
---
title: "Tuto tidyverse"
output:
html_document
---
```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = TRUE,
message = FALSE,
warning = FALSE)
```
Bienvenue dans le *tidyverse*.
Voici une petite sélection des fonctions utiles pour la manipulation de data.frame.
```{r}
library(tidyverse) # charge plusieurs packages
```
# Readr: importer des datas (et écrire)
```{r}
data <- read_tsv("./data_note.tsv")
# write_tsv(data, file = "./data_note.tsv")
```
# %>%
Le pipe prend l'output de la précédente commande et l'envoie dans le premier argument de la commande suivante.
```{r}
data %>% head() # = head(data)
```
# dplyr
## Selection des colonnes (select)
*Plusieurs packages ont une fonction `select()`, on explicite celle de dplyr avec `dplyr::select()`*
```{r}
data %>% dplyr::select(c(ID, E1))
```
## Filtrer les lignes (filter)
```{r}
data %>% filter(E1 > 90)
```
## Ajouter des colonnes (mutate)
```{r}
data %>% mutate(Moyenne_Exam = (E1+E2)/2)
```
## Trier (arrange)
```{r}
data %>% arrange(desc(E2)) # ordre décroissant
data %>% arrange(E2) # ordre croissant
```
## Jointure
Permet de joindre 2 tables qui ont une ou plusieurs colonnes en commun.
Il a plusieurs de type de jointure: `left_join`, `right_join`, `full_join`, `inner_join`, ...
Soit le data.frame *Sex* qui contient le sexe (colonne sexe) de étudiants (colonne ID_s).
```{r}
Sexe <- data.frame(ID_s = data$ID,
sexe = sample(c("M","F"), replace = T, size = length(data$ID)))
head(Sexe)
left_join(data, Sexe, by = c("ID" = "ID_s"))
```
## Group_by et summarise
La combinaison des 2 outils permets de créer des sous-groupes et réaliser des opérations sur ces sous-groupes.
```{r}
# moyenne des E2 par année et par cohorte
data %>% group_by(Année, Cohorte) %>%
summarise(Moyenne_Y_E2 = mean(E2))
# nombre d'étudiants par année
data %>% group_by(Année) %>%
summarise(N = n())
```
# tidyr
## passer un data.frame au format *long*
```{r}
tmp.long <- data %>%
pivot_longer(names_to = "Type_Control", # colonne nom de variable
values_to = "Note", # colonne contenu
-c(ID, Année, Cohorte)) # colonne a ne pas transformer
tmp.long
```
## dans l'autre sens (format large)
```{r}
tmp.long %>% pivot_wider(names_from = Type_Control,
values_from = Note)
```