Importer un fichier de données (au format csv) dans RStudio
# On nomme le tableau de données "d"
# d <- read.csv2(file.choose())
head() : afficher les premières lignes d’un tableau
# Le tableau de données "Orange" est incorporé dans R (35 lignes et 3 colonnes)
head(Orange)
## Tree age circumference
## 1 1 118 30
## 2 1 484 58
## 3 1 664 87
## 4 1 1004 115
## 5 1 1231 120
## 6 1 1372 142
nrow() et ncol() : nombre de lignes et de colonnes d’un tableau
nrow(Orange)
## [1] 35
ncol(Orange)
## [1] 3
data.frame() : Créer un tableau à partir de vecteurs
note <- c(14,12,17,10) # vecteur
matiere <- c("maths","histoire","anglais","philo") # vecteur
classement <- c(8,11,3,15) # vecteur
data.frame(note,matiere,classement)
## note matiere classement
## 1 14 maths 8
## 2 12 histoire 11
## 3 17 anglais 3
## 4 10 philo 15
Sélectionner une colonne dans un tableau
# on utiliser le symbole '$'
Orange$Tree # on sélectionne la colonne "Tree" dans le tableau Orange
## [1] 1 1 1 1 1 1 1 2 2 2 2 2 2 2 3 3 3 3 3 3 3 4 4 4 4 4 4 4 5 5 5 5 5 5 5
## Levels: 3 < 1 < 5 < 2 < 4
Indexation d’un tableau
## Entre les crochets :
# à gauche de la virgule -> sélection des lignes
# à droite de la virgule -> sélection des colonnes
# Dans le tableau Orange, on sélectionne les arbres de type 2
Orange[Orange$Tree == 2,]
## Tree age circumference
## 8 2 118 33
## 9 2 484 69
## 10 2 664 111
## 11 2 1004 156
## 12 2 1231 172
## 13 2 1372 203
## 14 2 1582 203
# Remarque : cette commande crée un nouveau tableau, on peut donc en sélectionner une colonne (ex: age)
Orange[Orange$Tree == 2,]$age
## [1] 118 484 664 1004 1231 1372 1582
# Une autre façon de le faire : on crée un nouvel objet (qu'on appelle "Orange2")
Orange2 <- Orange[Orange$Tree == 2,]
Orange2
## Tree age circumference
## 8 2 118 33
## 9 2 484 69
## 10 2 664 111
## 11 2 1004 156
## 12 2 1231 172
## 13 2 1372 203
## 14 2 1582 203
Orange2$age
## [1] 118 484 664 1004 1231 1372 1582
# Dans le tableau Orange, on sélectionne la variable "age"
Orange[,2]
## [1] 118 484 664 1004 1231 1372 1582 118 484 664 1004 1231 1372 1582 118
## [16] 484 664 1004 1231 1372 1582 118 484 664 1004 1231 1372 1582 118 484
## [31] 664 1004 1231 1372 1582
# Dans le tableau Orange, on sélectionne l'age des arbres de type 2
Orange[Orange$Tree == 2, 2]
## [1] 118 484 664 1004 1231 1372 1582
table() : distribution d’une variable discrète
# On crée une variable aléatoire de 1 à 6 (20 observations)
x <- sample(1:6, 20, replace=T) # on tire au hasard une valeur entre 1 et 6, 20 fois de suite
table(x) # nombre d'occurences de chaque valeur (effectifs)
## x
## 1 2 3 4 5 6
## 5 3 1 6 2 3
prop.table(table(x)) # pourcentages
## x
## 1 2 3 4 5 6
## 0.25 0.15 0.05 0.30 0.10 0.15
# On affiche les effectifs et les pourcentages dans un tableau avec la commande data.frame
effectifs <- table(x)
pourcentages <- prop.table(table(x))
df <- data.frame(effectifs, pourcentages)
df
## x Freq x.1 Freq.1
## 1 1 5 1 0.25
## 2 2 3 2 0.15
## 3 3 1 3 0.05
## 4 4 6 4 0.30
## 5 5 2 5 0.10
## 6 6 3 6 0.15
df <- data.frame(table(x), prop.table(table(x))) # alternative sans créer d'objets
df2 <- df[,-3] # on retire la 3e colonne qui est redondante
names(df2) <- c("valeur","frequence","pourcentage") # on renomme les colonnes
df2
## valeur frequence pourcentage
## 1 1 5 0.25
## 2 2 3 0.15
## 3 3 1 0.05
## 4 4 6 0.30
## 5 5 2 0.10
## 6 6 3 0.15
# Pour info: la loi des grands nombres
x <- sample(1:6, 10000, replace=T) # on tire au hasard une valeur entre 1 et 6, 10000 fois de suite
df <- data.frame(table(x), prop.table(table(x)))
df2 <- df[,-3]
names(df2) <- c("valeur","frequence","pourcentage")
df2 # => les effectifs observés se rapprochent des effectifs théoriques quand N augmente
## valeur frequence pourcentage
## 1 1 1672 0.1672
## 2 2 1621 0.1621
## 3 3 1666 0.1666
## 4 4 1633 0.1633
## 5 5 1661 0.1661
## 6 6 1747 0.1747
aggregate : afficher les moyennes d’une variable en fonction d’une ou plusieurs variable(s)
## jeu de données Salaries
library(carData)
# moyenne du salaire en fonction du genre
aggregate(Salaries$salary, by = list(Salaries$sex), FUN = mean)
## Group.1 x
## 1 Female 101002.4
## 2 Male 115090.4
# moyenne du salaire en fonction du genre et du statut
aggregate(Salaries$salary, by = list(Salaries$sex, Salaries$rank), FUN = mean)
## Group.1 Group.2 x
## 1 Female AsstProf 78049.91
## 2 Male AsstProf 81311.46
## 3 Female AssocProf 88512.80
## 4 Male AssocProf 94869.70
## 5 Female Prof 121967.61
## 6 Male Prof 127120.82
Le package “psych”
# charger le package : library(psych)
# La fonction "describe" indique les stats descriptive d'une variable