Les fonctions sur les caractères#
Les actuaires doivent souvent travailler avec des bases de données qui contiennent des variables de type caractère. Il arrive qu’on veuille modifier le texte ou en extraire une partie. Dans cette section, nous verrons les fonctions les plus utilisées qui nous facilitent la tâche.
mais d’abord, créons quelques objets de type text
:
un_bonjour <- "Bonjour"
salutations <- c("Bonjour", "Hi", "hey", "Salam")
mot <- "world"
question <- "Quel est le language de programmation préféré des actuaires?"
reponse <- "Rrrrrrrr"
un_bonjour<-"Bonjour"
salutations<-c("Bonjour","Hi","Hey","Salam")
mot<-"World"
question<-"Quel est le langage de programmation préféré des actuaires?"
réponse<-"Rrrrrrrrrr"
substr()#
La fonction substr(x, start, stop)
nous sert souvent lorsqu’on veut extraire une partie d’une chaîne de caractères.
Par exemple, appliquons une extraction du premier mot Quel
, ce dernier commence à l’index #1 et termine à l’index #4
question
substr(question, 13, 20)
substr(question, 1, 4)
pour le mot langage
;
substr(question, 13, 19)
nchar()#
Dans un plus long texte, nous ignorons la longueur du texte. Si l’on veut compter le nombre de caractères à l’intérieur d’une chaine de caractères, on utilise alors nchar
nchar(question)
On s’en sert souvent lorsqu’on ne veut pas fixer l’argument maximum de la fonction;
substr(question, nchar(question)-9, nchar(question))
Si l’on applique cette fonction sur un vecteur, nous obtenons bien sûr un vecteur comme résultat
substr(salutations, nchar(salutations)-2, nchar(salutations))
- 'our'
- 'Hi'
- 'Hey'
- 'lam'
Paste#
Lorsqu’on veut concaténer des chaines de caractères, on utilise alors la fonction paste
. Passons nos salutations au monde!
paste(salutations, mot)
- 'Bonjour World'
- 'Hi World'
- 'Hey World'
- 'Salam World'
L’argument sep
nous spécifie quel caractère nous utilisons afin de séperer ce qu’on veut concatener;
paste(salutations, mot, sep=" -_- ")
- 'Bonjour -_- World'
- 'Hi -_- World'
- 'Hey -_- World'
- 'Salam -_- World'
Par défaut le séparateur est un espace. Si l’on voulait enlever l’espace, il faudrait alors le spécifier dans l’argument sep=''
paste(salutations, mot, sep="")
- 'BonjourWorld'
- 'HiWorld'
- 'HeyWorld'
- 'SalamWorld'
Bien sûr, nous ne sommes pas limités à concaténer seulement deux mots, on peut ajouter directement d’autres caractères
paste(salutations, mot, "!", sep=", ")
- 'Bonjour, World, !'
- 'Hi, World, !'
- 'Hey, World, !'
- 'Salam, World, !'
paste(salutations, ", ",mot, "!", sep="")
- 'Bonjour, World!'
- 'Hi, World!'
- 'Hey, World!'
- 'Salam, World!'
Autre exemple qu’on pourrait souvent utiliser lorsqu’on veut nommer des colonnes dans une matrice ou un data frame. Par exemple, nous avons 10 colonnes qu’on voudrait appeler cout_1
à cout_10
paste("cout_", 1:10, sep="")
- 'cout_1'
- 'cout_2'
- 'cout_3'
- 'cout_4'
- 'cout_5'
- 'cout_6'
- 'cout_7'
- 'cout_8'
- 'cout_9'
- 'cout_10'
grep#
Une fonction très utile lorsqu’on cherche l’index d’un élément à l’intérieur d’un vecteur d’éléments constitués de chaînes de caractères. Dans l’exemple suivant, nous cherchons l’index de l’occurrence de la lettre
grep("H", salutations)
- 2
- 3
Ça nous dit que le 1er ainsi que le 3e élément contienent les lettre H
Si l’on veut extraire ces éléments, nous ajoutons alors l’argument value=TRUE
grep("H", salutations, value=TRUE)
- 'Hi'
- 'Hey'
On se rappelle que R contient une base de données qui contient l’information géographique de tous les états du pays de l’oncle Sam. Dans un autre exemple, cherchons les noms de ces états avec le mot NEW dedans.
grep("New", state.name, value=TRUE)
- 'New Hampshire'
- 'New Jersey'
- 'New Mexico'
- 'New York'
strsplit#
Cette fonction permet de séparer les chaines de caractères par un argument donné.
strsplit(question, " ")
-
- 'Quel'
- 'est'
- 'le'
- 'langage'
- 'de'
- 'programmation'
- 'préféré'
- 'des'
- 'actuaires?'
sub#
Lorsqu’on veut un caractère ou une chaine de caractères à l’intérieur d’une autre chaine de caractère, nous utilisons alors la fonction sub
sub("actuaires", "geeks", question)
La fonction sub
remplace seulement la première occurrence.
gsub#
La fonction gsub
remplace un caractère donné à toutes les occurrences;
sub(" ", "-", question)
gsub(" ", "-", question)