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