Data Structures en R
Intro
R est un language de programmation conçu pour le calcul mathématique, les statistiques et l’analyse de données.
En 2000, la version 1.0.0 de R fut rendu accessible à l’utilisation du public. Sa syntaxe très proche du S et S-PLUS, les deux languages précurseurs de ‘R’.
Le language de programmation R est un language dit de science, taillé pour le calcul statistique et scientifique. Des millions de data analystes et data scientistes l’utilisent au jour le jour. Il est aussi devenu un l’outil de prédilection pour de nombreux hommes d’affaires pour analyser leurs bilans et anticiper les tendances ainsi que leur impact sur leurs strategies et positionnement commerciale.
Il est important avant de se lancer dans des analyses poussées de comprendre les data structures qui représentent le socle de R et les fondamentaux de la grammaire de ce language. Ces notions sont nécessaires à bien connaitre avant de s’aventurer dans la technicité statistique.
Installation de l’environnement
R s’installe à partir de ce lien (disponible par pays et par OS) : https://www.r-project.org
R jouis de son propre environnement [IDE] qui s’appelle RStudio, que vous pouvez également télécharger gratuitement à partir de ce lien (RStudio Desktop) : https://rstudio.com/products/rstudio/download/
Pour devenir un Data Scientist ou Analyst et même un Business analyst, il vous faudra connaître les 5 structures de data dans lesquelles vous intègrerais vos données dans le but de les manipuler et les analyser.
Ces cinq dernières sont les suivantes :
- Vectors
- Matrices
- lists
- Factors
- Data Frames
Voyons d’abord ensemble les different types de données que nous pouvons intégrer dans ces structures.
La console R
Je préconise pour se faire la main au debut de travailler sur la console qui s’initialise au moment du lancement de R qui vient dans ce format une fois installée sur votre machine.
Vous verrez apparaitre sur votre écran la console R :
Les objets en R
Une fois l’environnement installé, nous pouvons commencer à écrire nos premières lignes de code.
En R, une variable ou objet se déclare en utilisant l’opérateur d’assignation le suivant : ’<-‘
Les chiffres entre crochets ‘[1]’ ne font pas partie des valeurs imprimées mais font office de référencement pour l’impression de l’objet.
R a 5 classes d’objets basiques ou bien dites atomiques :
- Character
- Numeric (des nombres)
- Integer(des entiers)
- Complex
- Logical(Vrai / Faux)
L’objet le plus basique en R est un vecteur dit ‘vector’. Le vecteur vide se déclare en utilisant la fonction vector(). Ce dernier peut seulement contenir un même type d’objet. L’exception à cette règle sera la liste ‘list’.
La creation de vecteurs
La fonction c() permet de créer des vecteurs d’objects en contenant des valeurs ensemble.
Nous pouvons également créer un vecteur en lui assignant une classe d’objet explicite comme c’est le cas ci-dessous :
R se charge de nommer la classe de l’objet ipso facto lors de sa création. Il est cependant possible de changer la classe de l’objet en utilisant la fonction as* :
// Class() est une fonction utile qui permet de connaître la classe d’un objet//
Faisons maintenant place aux structures dans lesquels nous allons manipuler ces objets sous leurs différentes classes.
Les matrices [Matrix]
Une matrice est un tableau à deux dimensions. Cet attribut dimensionnel est un vecteur de classe entier et d’une longueur s’étendant à deux. Elle comporte des rangées et des colonnes.
On l’initialise en appelant la fonction matrix(). Le premier argument de cette fonction est le nombre de rangée et son deuxième determine le nombre de colonnes.
Les valeurs non mentionnées en R sont automatiquement designées ‘NA’, à savoir non applicable ou sans valeurs. Pour explorer une structure de données, on fait appel à la fonction dim(), diminutif de dimensions. Elle est très utile quand nous analysons une matrice donnée et non créée puisqu’elle permet d’identifier la découpe dimensionnelle de cette dernière.
Nous pouvons également faire appel à la fonction attributes() qui définit les attributs de notre structure.
La particularité des matrices c’est qu’elles sont construites à partir de leurs colones.
Elles peuvent également être conçues à partir de vecteurs en utilisant la fonction dim() comme dans l’exemple:
Puis, Les fonctions rbind() et cbind() facilitent également la creation des matrices en juxtaposant des objets :
Il est également possible de nommer nos colonnes et nos rangées à l’aide de deux fonctions colnames() et rownames() :
Les listes [Lists]
Cette structure est un type spécial de vecteur qui peuvent contenir des éléments de différentes classes. Elles sont un type de données crucial en R.
Ces dernières peuvent être créées explicitement en utilisant la fonction list () incorporant ainsi des valeurs choisies.
Une liste vide avec une longueur prédéfinie peut également se construire en utilisant la fonction vector()
Les facteurs [factor]
Les facteurs representent des données dites catégoriques.Un facteur peut être représenté comme un vecteur composé d’entiers dont chaque entier est labellisé. Il est preferable d’utiliser des labels afin d’expliciter la categorisation des données.
Un facteur se crée en utilisant la fonction factor().
La fonction table() orchestre nos données dans un tableau précisant la recurrence de chaque valeur au sein du vecteur.
Dans un facteur, l’ordre des valeurs est automatiquement classé par ordre alphabétique. Nous pouvons inverser cette ordre en le précisant à la suite de l’énonciation de nos vecteurs en ajoutant une caractéristique de niveau : ‘levels’.
Dataframes
Les data frames ou blocs de données sont utilisés pour stocker des données tabulaires dans R. Ils représentent une structure d’objet importante dans R et sont utilisés dans diverses applications de modélisation statistique. Le package dplyr de Hadley Wickham a un ensemble optimisé de fonctions conçues pour traiter efficacement des trames de données.
Hadley Wickham
Les blocs de données sont représentés comme un type spécial de liste où chaque élément de la liste doit avoir la même longueur.
Contrairement aux matrices, les blocs de données peuvent stocker différentes classes d’objets dans chaque colonne. En effet, les matrices doivent contenir des élément de la même classe.
Les blocs de données sont généralement créés en lisant un fichier de données en utilisant les deux fonctions les suivantes:
- read.table ()
ou
- read.csv ().
Cependant, les blocs de données peuvent également être créés explicitement avec la fonction data.frame ().
Les trames de données peuvent être converties en matrice en appelant la fonction data.matrix ().
Lecture et écriture de data
Il existe quelques fonctions principales qui lisent des données dans R.
- read.table, read.csv, pour lire les données tabulaires
- readLines, pour lire les lignes d’un fichier texte
- source, pour la lecture dans les fichiers de code R (inverse du dump)
- dget, pour lire dans des fichiers de code R (inverse de dput)
- load, pour la lecture dans les espaces de travail enregistrés
- unserialize, pour lire des objets R uniques sous forme binaire
Il existe des fonctions analogues pour écrire des données dans des fichiers comme:
- write.table, pour écrire des données tabulaires dans des fichiers texte (ex. CSV) ou des connexions
- writeLines, pour écrire des données de caractères ligne par ligne dans un fichier ou une connexion
- dump, pour vider une représentation textuelle de plusieurs objets R
- dput, pour sortir une représentation textuelle d’un objet R
- save, pour enregistrer un nombre arbitraire d’objets R au format binaire(éventuellement compressé) dans un fichier.
- serialize, pour convertir un objet R en un format binaire pour la sortie vers une connexion (ou un fichier).
Lecture de fichiers data avec read.table()
La fonction read.table () est l’une des fonctions les plus couramment utilisées pour lire des données.
La fonction read.table () a quelques arguments importants:
- file, le nom d’un fichier ou une connexion
- header, indique si le fichier a un en-tête
- sep, une chaîne indiquant comment les colonnes sont séparées
- colClasses, un vecteur de caractères indiquant la classe de chaque colonne de l’ensemble de données
- nrows, le nombre de lignes dans l’ensemble de données. Par défaut, read.table () lit un fichier entier.
- comment.char, une chaîne de caractères indiquant le caractère de commentaire. On l’indique comme ceci “#”. S’il votre fichier n’en contient pas, on le définit comme une chaîne vide ” “.
- skip, le nombre de lignes à sauter depuis le début. Vous pouvez généralement appeler read.table sans en spécifier d’autres arguments que le fichier csv que vous désirez lire.
Conclusion
Nous avons pu voir dans cet article les notions essentielles dans R:
- classes atomiques: numérique, logique, caractère, entier, complexe
ansi que les 5 structures de données fondamentales à tout analyste:
- vecteurs,
- listes
- facteurs
- matrices
- les dataframes
Tous les objets en R peuvent avoir des attributs qui aident à décrire ce qu’il y a dans l’objet. Les plus utiles de ces derniers sont sans doute les noms, tels que les noms de colonnes et de lignes dans un bloc de données, ou simplement des noms dans un vecteur ou une liste. Les attributs tels que les dimensions sont également importants car ils peuvent modifier le comportement des objets, comme transformer un vecteur en matrice par exemple.
Ces concepts basiques vont nous permettre, dans le prochain article, d’approfondir le sujet et notamment l’ouverture et la lecture des fichiers. Cela s’inscrira dans une série d’articles sur le Data Mining en R.
Leave a Reply