CHAÎNES DE CARACTÈRES ER DATES EN R
MODULE 5
118
Opérations sur les chaines de caractères
Dans ce chapitre, nous allons voir plusieurs fonctions pour manipuler des chaînes dans le langage de programmation R.
Pour commencer, nous allons lire du texte à partir d'un fichier afin de démontrer les opérations sur les chaînes.
La variable summary contiendra un vecteur avec 3 éléments qui représentent les 3 lignes du fichier. Vous pouvez voir à quoi ressemblent ces lignes dans la diapositive suivante.
CHAÎNES DE CARACTÈRES ER DATES EN R 119
Opérations sur les chaines de caractères
CHAÎNES DE CARACTÈRES ER DATES EN R 120
Opérations de base sur les chaînes
- Si vous souhaitez compter le nombre de caractères dans une chaîne, vous pouvez utiliser la fonction nchar tout en passant la chaîne comme argument.
• Comme vous pouvez le voir, le premier élément de notre vecteur est
une chaîne de 450 caractères.
CHAÎNES DE CARACTÈRES ER DATES EN R 121
Opérations de base sur les chaînes
Si vous souhaitez convertir tous les caractères d'une chaîne en majuscules, vous pouvez utiliser la fonction toupper.
Vous pouvez voir à quoi cela ressemblerait ici.
CHAÎNES DE CARACTÈRES ER DATES EN R 122
Opérations de base sur les chaînes
- De même, vous pouvez utiliser la fonction tolower si vous souhaitez convertir tous les caractères de la chaîne en minuscules.
CHAÎNES DE CARACTÈRES ER DATES EN R 123
Opérations de base sur les chaînes
Afin de remplacer un ensemble spécifique de caractères dans une chaîne, vous pouvez utiliser la fonction chartr.
Le premier argument est une chaîne contenant les caractères que vous souhaitez remplacer.
Le deuxième argument est une chaîne contenant les caractères de remplacement.
Et le dernier argument est la chaîne sur laquelle vous souhaitez appliquer l'opération.
Vous pouvez voir dans la diapositive suivante (exemple) comment la fonction a remplacé chaque caractère d'espace par un trait d'union.
CHAÎNES DE CARACTÈRES ER DATES EN R 124
Opérations de base sur les chaînes
CHAÎNES DE CARACTÈRES ER DATES EN R 125
Opérations de base sur les chaînes
- La fonction strsplit vous permet de séparer une chaîne en utilisant une sorte d'expression. Observons la syntaxe ici.
CHAÎNES DE CARACTÈRES ER DATES EN R 126
Opérations de base sur les chaînes
Le premier argument est la chaîne à fractionner et le second argument est l'expression que nous voulons utiliser pour effectuer le fractionnement.
Dans ce cas, nous divisons la chaîne par le caractère espace.
Cela retourne une liste, donc pour former un vecteur de caractères, nous devons utiliser la fonction unlist.
Lorsque vous regardez la sortie, vous remarquerez que le vecteur a un élément par mot, car dans la chaîne d'origine, chaque mot est séparé par un caractère d'espace.
CHAÎNES DE CARACTÈRES ER DATES EN R 127
Opérations de base sur les chaînes
- Le vecteur word_list peut être trié, en le passant dans la fonction sort. Cela classera les éléments par ordre alphabétique.
CHAÎNES DE CARACTÈRES ER DATES EN R 128
Opérations de base sur les chaînes
Nous pouvons également concaténer les éléments d'un vecteur de caractères en utilisant la fonction paste.
L'argument collapse détermine la valeur de chaîne qui séparera les éléments individuels. Dans notre cas, nous allons simplement les séparer par un seul caractère d'espace.
Voir la sortie de la diapositive suivante qui est une chaîne unique représentant notre liste triée par ordre alphabétique.
Publicité
CHAÎNES DE CARACTÈRES ER DATES EN R 129
Opérations de base sur les chaînes
CHAÎNES DE CARACTÈRES ER DATES EN R 130
Opérations de base sur les chaînes
Pour isoler une partie spécifique d'une chaîne, vous pouvez utiliser la fonction substr. Passez simplement les indices de début et de fin du segment souhaité, et ce segment contigu sera généré.
N otez que cette sous-c h a ne î part cu i liè re a un caract è re d' espacement au début et à la fin. Pour s'en débarrasser, nous pouvons utiliser la fonction trimws, qui supprime tous les espaces du début et de la fin d'une chaîne.
CHAÎNES DE CARACTÈRES ER DATES EN R 131
Opérations de base sur les chaînes
Il peut arriver que vous souhaitiez former une sous-chaîne en comptant à partir de la dernière position. Par exemple, vous voudrez peut-être les 8 derniers caractères, comme ceux que vous voyez ici.
Pour ce faire, vous devrez utiliser la fonction str_sub de la bibliothèque stringr.
CHAÎNES DE CARACTÈRES ER DATES EN R 132
Opérations de base sur les chaînes
Remarquez comment les arguments de point de départ et de fin sont négatifs dans ce cas.
Ainsi , le p oint de dé p art est le huitième caractère à p artir du dernier
point de la chaîne et le point final est l'index du dernier caractère.
- Vous pouvez voir dans la sortie que cela a réussi à récupérer les huit derniers caractères.
CHAÎNES DE CARACTÈRES ER DATES EN R 133
Le format de dates en R
Dans ce chapitre, nous allons voir comment travailler avec des dates de calendrier dans le langage de programmation R.
Les dates sont des données importantes particulièrement lorsqu’ils s’agi de données dépendantes du temps.
Les opérations sur les dates ne sont pas triviales et les dates sont présentées sous différents formats qu’il fau savoir gérer.
CHAÎNES DE CARACTÈRES ER DATES EN R 134
La classe Date
R a une classe d'objets spécialisée pour conserver les dates d'un calendrier.
La sortie ici peut simplement ressembler à des chaînes, mais R représente en fait une date comme le nombre de jours depuis le 1er janvier 1970 .
Cette représentation particulière des dates est devenue une norme dans les environnements informatiques.
Notez que les dates sont basées sur le calendrier grégorien.
CHAÎNES DE CARACTÈRES ER DATES EN R 135
Ensemble de données d'acteurs primés aux Oscars
Nous allons pratiquer le format de date, mais commençons par charger une base de données d'acteurs primés aux Oscars.
Comme vous pouvez le voir, la date de naissance de chaque acteur est représentée dans un format non standard.
CHAÎNES DE CARACTÈRES ER DATES EN R 136
Ensemble de données d'acteurs primés aux Oscars
En vérifiant la structure de la trame de données avec la fonction str, on voit que la colonne Date.of.Birth est de type int.
Il s'avère que ce nombre est représenté au format horaire UNIX, une autre norme qui compte le nombre de secondes depuis le début du 1
janvier 1970.
CHAÎNES DE CARACTÈRES ER DATES EN R 137
Conversion du time d’UNIX en date
Nous allons donc devoir reformater ces valeurs pour travailler avec la représentation de dates de R.
Pour ce faire, nous utiliserons la fonction as.POSIXct. POSIX est juste un autre standard de format de date que R utilise pour sa structure de classe Date.
actors.birthday <- as.POSIXct(bestActors$Date.of.Birth, origin = "1970-01-01")
Mais en plus de passer dans la colonne que nous voulons convertir, nous devons également fournir à la fonction un point de référence, qui sera le 1er janvier 1970.
La sortie de la fonction sera un horodatage complet, qui a le structure suivante :
Publicité
YYYY-MM-DD HH:MM:SS
CHAÎNES DE CARACTÈRES ER DATES EN R 138
Conversion du time d’UNIX en date
Puisque nous ne traitons que des dates de calendrier, nous n'avons pas besoin des heures, des minutes et des secondes.
Nous devrons donc utiliser une fonction as.Date pour obtenir le format dont nous avons besoin.
La fonction as.Date prend une chaîne de caractères ou un horodatage POSIX et le convertit en un objet de la classe Date.
Vous pouvez voir le résultat final dans la sortie ici.
actors.birthday <- as.Date (actors.birthday)
CHAÎNES DE CARACTÈRES ER DATES EN R 139
Ensemble de données d'actrices primées aux Oscars
Considérons maintenant une autre date frame qui concerne des informations sur les actrices oscarisées.
Comme précédemment, nous pouvons passer ce data frame à la fonction str afin de voir sa structure.
CHAÎNES DE CARACTÈRES ER DATES EN R 140
Ensemble de données d'actrices primées aux Oscars
Nous avons rencontré un autre problème, car la colonne Date.of.Birth contient des facteurs, et non la classe Date.
Nous devrons donc également convertir cette colonne et encore une fois, nous utiliserons as.Date, qui fonctionne à la fois avec les facteurs
et les types de caractères.
- Le paramètre supplémentaire indique à la fonction de s'attendre à ce que le format de la date soit "Année Mois Jour", dans cet ordre, séparé par des barres obliques
actesses.birthday <- as.Date (actresses.birthday, "%Y/%m/%d")
CHAÎNES DE CARACTÈRES ER DATES EN R 141
Formatage de date
Regardons un autre exemple pour comprendre le paramètre de formatage de la date.
Le premier argument de la fonction est la chaîne que nous voulons transformer en objet date .
Le deuxième argument indique à nouveau à R que le premier argument a la structure "jour mois année" séparée par des barres obliques.
Comme vous pouvez le voir ici, R a analysé avec succès notre chaîne pour former un objet Date.
CHAÎNES DE CARACTÈRES ER DATES EN R 142
Formatage de date
R vous permet de spécifier le format en détail à l'aide des codes suivants:
Par défaut, R suppose que la date au format "année mois jour" séparée par des tirets ou des barres obliques.
Notez que puisque notre deuxième paramètre a un «y» minuscule pour l'année, R savait chercher une représentation d'année à deux chiffres.
CHAÎNES DE CARACTÈRES ER DATES EN R 143
Fonction utiles pour la gestion de dates
Vous pouvez utiliser plusieurs opérations sur les objets Date.
Dans l’exemple suivant, nous soustrayons simplement une date d'une autre pour obtenir le nombre de jours entre les deux dates.
• Dans cet autre exemple, nous utilisons un comparateur pour voir si une
date succède à une autre.
CHAÎNES DE CARACTÈRES ER DATES EN R 144
Fonction utiles pour la gestion de dates
Vous pouvez également soustraire un nombre à une date. Dans ce cas, le résultat est une date qui remonte à 14 jours.
Il existe également trois fonctions qui renvoient la date et l'heure en fonction du système . Ces fonctions sont présentées dans la diaposittive
suivante.
CHAÎNES DE CARACTÈRES ER DATES EN R 145
Fonction utiles pour la gestion de dates
La fonction Sys.Date renvoie la date actuelle sous la forme d'un objet de classe Date.
La fonction date renvoie une chaîne de caractères décrivant la date et l ' heure actuelles .
Publicité
Et Sys.time renvoie l'heure actuelle dans un format d'horodatage POSIX.
CHAÎNES DE CARACTÈRES ER DATES EN R 146
Fonction utiles pour la gestion de dates
Vous pouvez également appliquer des conversions utiles à un objet de classe de date.
La fonction weekdays convertit la date en une chaîne représentant le jour de la semaine auquel la date tombe.
La fonction months fonctionne de la même manière.
Et il y a aussi une fonction "quarts", qui renvoie une chaîne contenant le trimestre dans lequel la date tombe.
CHAÎNES DE CARACTÈRES ER DATES EN R 147
Les expressions régulières en R
Dans ce chapitre, nous allons voir comment travailler avec des expressions régulières dans le langage de programmation R.
Pour ce faire, nous allons utiliser le data frame simple contenant quelques noms et adresses e-mail de différentes régions.
CHAÎNES DE CARACTÈRES ER DATES EN R 148
Les expressions régulières en R
Supposons que notre objectif soit d'effectuer une analyse sur chacun des domaines des adresses e-mail.
Le problème est que certaines des adresses e-mail ont des différences régionales, de sorte que les URL peuvent différer, comme celles que vous voyez ici.
John Doe [email protected]
Mark Mann [email protected]
CHAÎNES DE CARACTÈRES ER DATES EN R 149
Les expressions régulières en R
- Donc, ce que nous devons faire est d'isoler tous les caractères entre le signe «arobase» et le caractère point "."
John Doe [email protected]
Jane Doe [email protected]
Mark Mann [email protected]
• Cela semble compliqué au début car les URL peuvent avoir des
longueurs variables ou des caractères « étranges », les expressions régulières sont donc parfaites pour une tâche comme celle-ci.
CHAÎNES DE CARACTÈRES ER DATES EN R 150
Les expressions régulières en R
Les expressions régulières sont utilisées pour faire correspondre les modèles dans les chaînes et le texte.
Supposons que vous deviez exprimer la structure d'une adresse e-mail, comme celle-ci, mais dans le cas général.
• Un e-mail peut être exprimé comme un ensemble de caractères, suivi
de @, suivi d'un autre ensemble de caractères.
- Ce que nous venons de décrire pourrait être écrit sous forme d’une d'expression régulière comme suit.
.+@.+
- Nous avons le signe @ au milieu, avec le texte avant et après.
CHAÎNES DE CARACTÈRES ER DATES EN R 151
Les expressions régulières en R
Examinons de plus près ce que font tous ces symboles.
Le premier symbole de la chaîne d'expression régulière est un point, mais cela a une signification particulière. Un point est comme un joker, qui correspond à n'importe quel caractère.
Le signe plus est également un caractère spécial utilisé pour faire correspondre le motif précédent une ou plusieurs fois. Ainsi, un point suivi d'un signe plus correspondra à n'importe quelle séquence d'un ou plusieurs caractères.
Le @ correspond simplement à un signe @ dans la chaîne.
CHAÎNES DE CARACTÈRES ER DATES EN R 152
Les expressions régulières en R
- Rappelez-vous que notre objectif est d'isoler le texte entre le signe @ et le caractère point, mais puisque le caractère point a une signification particulière, nous devrons modifier un peu notre expression.
@.+\.
- Remarquez que dans cette expression, nous avons ajouté deux back slash avant le caractère point. Cela garantit que le caractère de point
Publicité
lui-même sera mis en correspondance dans une chaîne, plutôt que le point agissant comme un joker.
Ainsi, l'expression que vous voyez ici correspondra à un @, suivi d'un ou plusieurs caractères, suivi d'un point. C'est exactement ce dont nous avons besoin pour notre problème.
R fournit plusieurs fonctions qui utilisent des expressions régulières e nous en verrons les plus importantes dans ce qui suit.
CHAÎNES DE CARACTÈRES ER DATES EN R 153
Les expressions régulières en R
La fonction grep prend au moins deux entrées: l'expression régulière et une liste de chaînes que vous souhaitez vérifier pour une correspondance.
Notez q ue cette ex p ression ré g ulière contient un astéris q ue p lutôt q u'un
signe plus. Un astérisque correspondra à zéro ou plus de l'élément précédent, plutôt qu'à un ou plusieurs de l'élément précédent. À part cette différence subtile, leur comportement est le même.
- La sortie affiche les positions de liste des chaînes qui correspondent à cette expression régulière.
CHAÎNES DE CARACTÈRES ER DATES EN R 154
Les expressions régulières en R
- Vous pouvez utiliser le paramètre value pour indiquer à la fonction de générer les chaînes correspondantes plutôt que d’indiquer leurs positions.
CHAÎNES DE CARACTÈRES ER DATES EN R 155
Les expressions régulières en R
Vous pouvez également remplacer les chaînes trouvées par l'expression régulière en utilisant la fonction gsub.
Le deuxième argument est la chaîne de remplacement. Dans notre cas, tous les caractères après un @ seront remplacés par new . com .
Remarquez comment la deuxième chaîne n'a pas été affectée car il n'y avait pas de correspondance d'expression régulière.
CHAÎNES DE CARACTÈRES ER DATES EN R 156
Les expressions régulières en R
Afin d'extraire les chaînes correspondantes, vous pouvez utiliser la fonction regexpr, qui est comme un grep plus détaillé.
Cette fonction trouvera les sous-chaînes correspondantes. On passe ensuite la liste des chaînes et la liste des correspondances à la fonction regmatches, qui nous donne le résultat souhaité.
CHAÎNES DE CARACTÈRES ER DATES EN R 157
Les expressions régulières en R
Nous sommes maintenant prêts à résoudre notre problème.
Nous appliquons une expression régulière à la colonne e-mail, en veillant à tout isoler du signe @ au point.
Nous extrayons ensuite les sous-chaînes correspondantes et les ajouterons à une nouvelle colonne appelée domain.
• Et voici notre base de données avec la nouvelle colonne . Cette structure est désormais bien adaptée à l'analyse des données.
CHAÎNES DE CARACTÈRES ER DATES EN R 158
Les expressions régulières en R
CHAÎNES DE CARACTÈRES ER DATES EN R 159
Les expressions régulières en R
- Et voici notre base de données avec la nouvelle colonne. Cette structure est désormais bien adaptée à l'analyse des données.
CHAÎNES DE CARACTÈRES ER DATES EN R 160
Application des expressions régulières
Nous nous sommes principalement concentrés sur l'utilisation d'expressions régulières pour l'extraction de données, mais elles sont utilisées dans une grande variété de domaines,
Extraction de données.
Nettoyage des données.
Anal y se de données.
Validation de données.
Text Mining
Parsing
CHAÎNES DE CARACTÈRES ER DATES EN R 161