4.1 Data frame

Traditionnellement, En R, un tableau de données porte le nom de data frame. Voici un exemple de la création d’un data frame:

   tailles poids    reponse Sexe
1      167    86      Bac+2    H
2      192    74        Bac    H
3      173    83     Master    F
4      174    50        Bac    H
5      172    78        Bac    H
6      167    66        DEA    H
7      171    66   Doctorat    F
8      185    51         NA    H
9      163    50 Certificat    H
10     170    55        DES    H

Inspection visuelle

Dans RStudio, on peut afficher la visionneuse (viewer) en cliquant sur la petite icône en forme de tableau située à droite de la ligne d’un tableau de données dans l’onglet Environment du quadrant supérieur droit.

Vous pouvez aussi tapez la commande

Il est possible de trier les données selon une variable en cliquant sur le nom de cette dernière. Il y a également un champs de recherche et un bouton Filter donnant accès à des options de filtrage

La structure d’un data frame : la fonction str

La fonction str permet d’avoir un listing de toutes les variables d’un tableau de données et indique le type de chacune d’elle

'data.frame':   10 obs. of  4 variables:
 $ tailles: num  167 192 173 174 172 167 171 185 163 170
 $ poids  : num  86 74 83 50 78 66 66 51 50 55
 $ reponse: Factor w/ 8 levels "Bac","Bac+2",..: 2 1 7 1 1 4 6 8 3 5
 $ Sexe   : Factor w/ 2 levels "F","H": 2 2 1 2 2 2 1 2 2 2

Notez que, par défaut, tout vecteur composé de chaînes de caractères est transformé en facteur. On peut éviter cela en utilisant l’argument stringsAsFactors=FALSE

'data.frame':   10 obs. of  4 variables:
 $ tailles: num  167 192 173 174 172 167 171 185 163 170
 $ poids  : num  86 74 83 50 78 66 66 51 50 55
 $ reponse: chr  "Bac+2" "Bac" "Master" "Bac" ...
 $ Sexe   : Factor w/ 2 levels "F","H": 2 2 1 2 2 2 1 2 2 2

Quelque fonctions utiles

Pour connaitre les dimensions de la data frame, utiliser dim, ncol ou nrow.

[1] 10  4

Il est souvent pratique de visualiser les premières lignes d’une table:

  tailles poids reponse Sexe
1     167    86   Bac+2    H
2     192    74     Bac    H
3     173    83  Master    F
4     174    50     Bac    H
5     172    78     Bac    H
6     167    66     DEA    H

La fonction summary permet de calculer des statistiques de base:

    tailles        poids        reponse          Sexe 
 Min.   :163   Min.   :50.0   Length:10          F:2  
 1st Qu.:168   1st Qu.:52.0   Class :character   H:8  
 Median :172   Median :66.0   Mode  :character        
 Mean   :173   Mean   :65.9                           
 3rd Qu.:174   3rd Qu.:77.0                           
 Max.   :192   Max.   :86.0                           

Sélectionner des colonnes/variables

  • Par exemple, pour sélectionner la première colonne de mydata:
 [1] 167 192 173 174 172 167 171 185 163 170

ou

 [1] 167 192 173 174 172 167 171 185 163 170
  • Pour accéder à la première et troisième colonne de mydata :
   tailles    reponse
1      167      Bac+2
2      192        Bac
3      173     Master
4      174        Bac
5      172        Bac
6      167        DEA
7      171   Doctorat
8      185         NA
9      163 Certificat
10     170        DES

ou

   tailles poids
1      167    86
2      192    74
3      173    83
4      174    50
5      172    78
6      167    66
7      171    66
8      185    51
9      163    50
10     170    55
  • Pour accéder à tout sauf la première et troisième colonne de mydata :
   poids Sexe
1     86    H
2     74    H
3     83    F
4     50    H
5     78    H
6     66    H
7     66    F
8     51    H
9     50    H
10    55    H

Sélectionner des lignes/observations

De même, voici comment sélectionner certaines lignes de mydata :

  tailles poids reponse Sexe
1     167    86   Bac+2    H
  tailles poids reponse Sexe
3     173    83  Master    F
6     167    66     DEA    H
   tailles poids    reponse Sexe
1      167    86      Bac+2    H
2      192    74        Bac    H
4      174    50        Bac    H
5      172    78        Bac    H
7      171    66   Doctorat    F
8      185    51         NA    H
9      163    50 Certificat    H
10     170    55        DES    H

Pour effectuer une sélection selon un critère logique (Indexation logique), on utilisera la fonction subset . Voici quelques exemples.

   tailles poids    reponse Sexe
1      167    86      Bac+2    H
2      192    74        Bac    H
4      174    50        Bac    H
5      172    78        Bac    H
6      167    66        DEA    H
8      185    51         NA    H
9      163    50 Certificat    H
10     170    55        DES    H
  tailles poids reponse Sexe
1     167    86   Bac+2    H
5     172    78     Bac    H
  tailles poids  reponse Sexe
1     167    86    Bac+2    H
3     173    83   Master    F
5     172    78      Bac    H
7     171    66 Doctorat    F

D’autres manipulations sur les data-frames

Ajouter des colonnes : la fonction cbind

   tailles poids    reponse Sexe      Nom
1      167    86      Bac+2    H Benjamin
2      192    74        Bac    H     Hugo
3      173    83     Master    F     Emma
4      174    50        Bac    H     Alex
5      172    78        Bac    H      Tom
6      167    66        DEA    H     Axel
7      171    66   Doctorat    F    Alice
8      185    51         NA    H   Martin
9      163    50 Certificat    H    Robin
10     170    55        DES    H     Enzo

Ajouter des lignes : la fonction rbind

   tailles poids    reponse Sexe      Nom
1      167    86      Bac+2    H Benjamin
2      192    74        Bac    H     Hugo
3      173    83     Master    F     Emma
4      174    50        Bac    H     Alex
5      172    78        Bac    H      Tom
6      167    66        DEA    H     Axel
7      171    66   Doctorat    F    Alice
8      185    51         NA    H   Martin
9      163    50 Certificat    H    Robin
10     170    55        DES    H     Enzo
11     172    80        BAC    F    David

Modifier les colonnes d’un data frame

Supposons, par exemple, que vous voulez créer une nouvelle variable poidsG (poids en g), vous pouvez alors utiliser la commande

   tailles poids    reponse Sexe poidsG
1      167    86      Bac+2    H   8600
2      192    74        Bac    H   7400
3      173    83     Master    F   8300
4      174    50        Bac    H   5000
5      172    78        Bac    H   7800
6      167    66        DEA    H   6600
7      171    66   Doctorat    F   6600
8      185    51         NA    H   5100
9      163    50 Certificat    H   5000
10     170    55        DES    H   5500

ou à l’aide de la fonction transform

   tailles poids    reponse Sexe poidsG poidsG2
1      167    86      Bac+2    H   8600    8600
2      192    74        Bac    H   7400    7400
3      173    83     Master    F   8300    8300
4      174    50        Bac    H   5000    5000
5      172    78        Bac    H   7800    7800
6      167    66        DEA    H   6600    6600
7      171    66   Doctorat    F   6600    6600
8      185    51         NA    H   5100    5100
9      163    50 Certificat    H   5000    5000
10     170    55        DES    H   5500    5500

Remarquez que cette opération ne modifie pas mydata. Si vous voulez vraiment effectuer le changement alors vous devez taper mydata<-transform(mydata, poidsG2 = poids * 100).

Voici un autre exemple.

   tailles poids    reponse Sexe poidsG    imc          id1 id2
1      167    86      Bac+2    H   8600 30.837      Bac+2_H +75
2      192    74        Bac    H   7400 20.074        Bac_H -75
3      173    83     Master    F   8300 27.732     Master_F +75
4      174    50        Bac    H   5000 16.515        Bac_H -75
5      172    78        Bac    H   7800 26.366        Bac_H +75
6      167    66        DEA    H   6600 23.665        DEA_H -75
7      171    66   Doctorat    F   6600 22.571   Doctorat_F -75
8      185    51         NA    H   5100 14.901         NA_H -75
9      163    50 Certificat    H   5000 18.819 Certificat_H -75
10     170    55        DES    H   5500 19.031        DES_H -75