Data frame, le tableau statistique R

Un data frame est un tableau à deux dimensions. c’est aussi une combinaison de vecteurs de même longueur. C’est la structure de donnée la plus commune étant donnée l’hétérogénéité des données(les colonnes composant un data frame peuvent être de type différent) qu’elle permet de manipuler.

Statistiquement parlant, les lignes d’un data frame représente les individus étudiés ou observations et les colonnes ou de  variables les décrivant.

Création d’un data frame 

On peut obtenir des data frames en important des données à partir de data files avec les fonctions read.table(), read.csv(), read… Mais nous pouvons également les construire à partir d’autres objets de structure de données comme les vecteurs grâce à la fonction data.frame() ou comme les matrices ou certaines listes avec la fonction as.data.frame() :

Pour scruter en détail la structure d’un data frame, on utilise la fonction str(), ensuite nous pouvons observer le type de données de chaque colonne de notre objet. Notons que par défaut, les variables ou vecteur ou en colonne de type chaîne caractères ou character sont formatées comme des variables catégorielles ou factor :

Si, ce comportement n’est pas souhaité, il est possible d’interdire le formatage systématique de variable chaîne caractères en facteur grâce à l’argument stringsAsFactors = FALSE :

Comme mentionné, précédemment, on peut obtenir un data frame à partir des matrices ou listes comme ceci :

Les caractéristiques d’un data frame

Comme tout objet qui se respecte les data frame disposent également d’attributs ou propriétés qui les définissent. il s’agit notamment de leur dimension(Nombre de lignes et de colonnes), les noms des lignes ou observations ainsi que ceux des colonnes ou variables . Ces propriétés sont accessibles grâce aux fonctions en démo ci-dessous :

Nous pouvons altérer ou modifier les valeurs propriétés renvoyées par chacune de ces fonctions en les utilisant comme ceci sur le data framefonction(mon_data.frame) <- valeurs . Essayons par exemple de modifier ou de renommer les observations avec un code alphabétique comme ci-dessous :

Extraction d’éléments ou d ‘ensemble d’éléments d’un data frame

Pour l’extraction de sous ensemble d’un data frame, R propose plusieurs opérateurs comme les crochets [], le symbole dollar $ et des fonctions comme subset() et la structure attach()…detach() :

Maintenant avec l’utilisation de la fonction subset(), qui prendra en argument d’abord un data frame et ensuite un argument conditionnel, on peut faire des extractions très structurées et avancées voyons plutôt :

Enfin, il faut noter qu’il existe des fonctions qui nous permettent d’accéder aux variables ou colonnes d’un data frame comme si ces dernières été des objets ou vecteurs R à part entière. C’est notamment le couple de fonction attach()detach(), with() et within() qui permettent d’opérer ou d’interagir ou même de modifier les variables ou colonnes d’un data frame. A titre exemple :

Manipulation des data frame

    • Ajout de colonnes/variables ou lignes/observations à un data frame:

Pour ajouter une colonne à un data frame, il suffirait de recourir à l’opérateur dollar $ suivi du nom de la nouvelle variable à ajouter, ou utiliser le nom de la variable à l’intérieur des crochets [] :

Il est possible de combiner ou d’augmenter un data frame avec un autre data frame ou d’autres objets compatibles en recourant aux fonctions cbind() et rbind() notamment. La première permet de combiner des objets dans le sens des colonnes d’où le préfixe “c” et la deuxième dans le sens des lignes d’où le préfixe “r” (row : ligne en anglais) :

Nous pourrions combiner également des data frame entre eux comme ci-dessous :

    • Supprimer des lignes ou colonne

Pour supprimer des colonnes, il suffit d’affecter la valeur NULL à la colonne en question. Pour ce qui est de la suppression de lignes, il suffit pour cela d’écraser l’objet data frame par une version de lui-même omission faite des lignes indésirées. Par principe de prudence et donc de bonne pratique, il est recommandé plutôt de créer une version ou une copie de l’objet avec suppression de colonnes ou lignes voulues plutôt que de vouloir :

    • Fusionner des data frame avec la fonction merge()

Parfois, l’on est confronté aux mêmes données mais de sources différentes ou structurellement à des data frame ayant en commun quelques colonnes et qu’on voudrait avoir un data frame qui consoliderait l’ensemble des données. La fusion est l’opération à même de palier à ce type de problème :

Imaginons maintenant que nous avons que les colonnes à fusionner portent des noms différents, nous pouvons toujours réaliser la fusion en recourant aux arguments  by , by.x  et by.y :

On imagine bien que la fusion n’est pas une opération aussi simple, on a bien en argument deux data frame; la vraie question est de savoir laquelle des deux dominera le nouvel objet (celui qui verra ses gênes je veux dire données dominées le nouvel objet créé). Donc la fusion que nous avons vu ci-dessous, ne prend en considération que ceux que les deux objets ont en commun(opération ensembliste : intersection). En effet, il existe dernière tout ceci les arguments all , all.x et all.y , qui nous permettent respectivement lorsqu’ils sont TRUE, de faire une fusion totale( en terme d’opération ensembliste c’est l’union), une fusion partielle dans ce cas x respectivement y est l’ensemble ou l’objet dominant et y respectivement x n’est qu’un complément :

Naturellement, après une fusion de la sorte, R comme la nature, a horreur du vide, on verra l’apparition des NA, des valeurs manquantes(Missing data); nous verrons le traitement de ce type de données dans un prochain poste.

    • Agréger des données avec la fonction aggregate() et by()

Ces deux fonctions fonctionnent comme les tableaux croisés dynamiques d’Excel. Elles permettent des consolidations de données conditionnelles. Elle prend en argument la variable a agrégée, les facteurs d’agrégats et en fin la fonction d’agrégat :

    • La famille de fonction apply()

La famille de fonction apply() est bien connu par tout utilisateur R qui se respecte. C’est une fonction outil permettant d’appliquer d’autres fonctions à un objet de donnée complexe telle que les data frame, matrices …Bien sur c’est une famille de fonction vous vous attendez forcement aux restes de la famille, les voici : lapply(), sapply() , tapply(),…etc.Nous consacrerons un article ultérieur à toute la famille, pour le moment intéressons nous à apply(). Elle prend en argument d’abord un data frame, ensuite en argument le chiffre 1 ou 2, pour spécifier si la fonction qu’elle va recevoir en troisième argument va s’appliquer aux lignes (1) ou aux colonnes (2). Pratiquons plutôt :

    • Sommaire statistique avec la fameuse fonction summary()

Cette fonction permet de produire un résumé ou sommaire de 5 caractéristiques statistiques de chaque variables contenu dans un data frame :

    • Ordonner un data frame

Ordonner un data frame se fait comme une extraction de lignes, il faut d’abord sélectionner le ou les critères de tri et ensuite lui ou leur appliquer la fonction order():

 

Like
1