forked from MTES-MCT/parcours_r_socle_introduction
-
Notifications
You must be signed in to change notification settings - Fork 0
/
04-premier_jeu_donnees.Rmd
129 lines (87 loc) · 4.82 KB
/
04-premier_jeu_donnees.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
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
# Mon premier jeu de données
## Les types de valeurs dans R
Une valeur constitue l'unité de base des données pour R. Comme pour la plupart des logiciels, elles peuvent être de trois **types** :
- **Numérique** : entier, double
- **Caractère** : texte ou code
- **Logique** : booléens
Ces valeurs sont ensuites structurées au sein de vecteurs qui sont compilés dans des *dataframes*.
## Avant de manipuler le *dataframe* : installer et charger un *package*
Pour manipuler notre base de données, nous allons nous servir de fonctionnalités présentes dans le package `tidyverse`.
La première fois que l'on veut utiliser un package, il faut le télécharger sur notre ordinateur, avec `install.packages()` :
```{r, eval=FALSE}
install.packages("tidyverse")
```
Puis à l'ouverture d'une session R, le charger (si on a besoin de ses fonctions), avec `library()` :
```{r}
library("tidyverse")
```
Le package est prêt à être utilisé !
## Importation de données
Conseil : exporter les données au format CSV ; c'est le format le plus interopérable (supporté par tous les logiciels stat). Utiliser ensuite la fonction `read.csv` après avoir défini le répertoire de travail (ou en donnant le chemin complet)
```{r lecturecsv}
base <- read.csv (file = "data/Base_synth_territoires.csv",
header = T, sep = ";", dec = ",")
```
- `header =`indique la présence des noms de variable sur la première ligne
- `sep =` indique le séparateur de champ : ';' '/t' pour tabulation.
- `dec =` indique le séparateur de décimale ('.' par défaut)
- `colClasses =`permet de préciser le type de la données en entrée
$\Rightarrow$ `?read.csv` pour plus d'options
Autres façons d'importer les données
- Fonction `read_delim`, du package `readr`, plus rapide
- Fonction `fread`, du package `data.table`, beaucoup plus rapide !!
- Pour importer les fichiers XLS, ODT ou DBF, il existe des fonctions et des packages spécifiques
- **Le passage par un fichier csv est très recommandé**
## Structure des données : le *dataframe*
<center>![](images/DF1.png)</center>
- n lignes (observations)
- p colonnes (variables)
```{r dimdf}
nrow (base)
ncol (base)
dim (base)
```
## Gérer le type des variables
À chaque type de variable (numéric, factor,…) correspond une utilisation. Lors de l’import des données, un type est affecté automatiquement par R.
Mais le type peut être erronné. Il suffit alors de les convertir :
```{r converttype}
base <- mutate(base, LIBGEO = as.character (LIBGEO))
```
ou `as.factor()`, `as.numeric()`, etc...
Pour être sûr de ne pas faire de bêtise, il vaut mieux gérer les types au moment de l'importation avec le paramètre `colClasses` $\rightarrow$ exercice !
## Les valeurs particulières
- NA : Valeur manquante (*Not Available*)
- NaN : Pas un nombre (*Not a Number*, e.g., 0/0)
- -Inf, Inf : Infini positif ou négatif, e.g. 1/0
```{r}
V1 <- c(1, 14, NA, 32.7)
mean(V1) # renvoie NA. Not good !
mean(V1, na.rm = T) # renvoie 15.9 - OK !
```
$\Rightarrow$ Le [module 2 "Préparation des données"](https://mtes-mct.github.io/parcours-r/m2/index.html) aborde la gestion de ces valeurs particulières.
## Exercice : Importer les données et premier coup d'oeil
On peut importer n'importe quel format de données en R (Excel, SAT, Stata, SQL...). Beaucoup sont abordés lors du [module 2 "Préparation des données"](https://mtes-mct.github.io/parcours-r/m2/index.html). Pour ce module, nous ne voyons que l'importation de fichier `.CSV`. Si vous avez une base de données en Excel ou LibreOffice Calc, sauvegardez l'onglet que vous souhaitez en faisant "enregistrer sous" $\rightarrow$ "délimité CSV".
Ici, nous travaillerons sur une base de données communales fournie par l'Insee, dite "comparateur de territoires". Le fichier source (Excel) figure dans le sous-répertoire "data" et contient toutes les métadonnées.
- Utiliser la fonction `read.csv()` pour importer ce fichier et stocker le dans un objet `df`. **Veillez à ce que la région soit bien importée comme un facteur et non un entier**.
- Inspecter le dataframe avec les fonctions vues auparavant
```{r inspectdf}
df <- read.csv(file = "data/Base_synth_territoires.csv",
sep = ";", dec = ",",
colClasses = c(NA, "NULL", "character", "NULL","NULL","NULL",
NA, NA, NA, NA, rep("NULL", 28)))
str(df)
```
On peut également gérer les problèmes d'encodage de caractères (si on passe de Windows à un système Unix, par exemple).
```{r}
head(df)
tail(df)
names(df)
class(df) # la classe de l'objet (du point de vue langage orienté objet)
typeof(df) # le type d'objet du point de vue "interne" à R
# Accéder a une variable directement (on obtient un vecteur), grâce à $ :
df$CODGEO[1:10] # Captain crochet poweeeeerr !!!
class(df$CODGEO)
typeof(df$CODGEO)
length(df)
length(df$REG)
```