Comment extraire une chaîne entre des caractères spécifiques dans R
Vous pouvez utiliser les méthodes suivantes pour extraire une chaîne entre des caractères spécifiques dans R :
Méthode 1 : Extraire la chaîne entre des caractères spécifiques à l’aide de Base R
gsub(".*char1 (.+) char2.*", "\\1", my_string)
Méthode 2 : extraire la chaîne entre des caractères spécifiques à l’aide de stringr
library(stringr) str_match(my_string, "char1\\s*(.*?)\\s*char2")[,2]
Ces deux exemples extraient la chaîne entre les caractères char1 et char2 dans my_string .
Les exemples suivants montrent comment utiliser chaque méthode en pratique avec le bloc de données suivant :
#create data frame
df <- data.frame(team=c('team Mavs pro', 'team Heat pro', 'team Nets pro'),
points=c(114, 135, 119))
#view data frame
df
team points
1 team Mavs pro 114
2 team Heat pro 135
3 team Nets pro 119
Exemple 1 : Extraire une chaîne entre des caractères spécifiques à l’aide de Base R
Le code suivant montre comment extraire la chaîne entre les caractères team et pro pour chaque ligne de la colonne team du bloc de données :
#create new column that extracts string between team and pro df$team_name <- gsub(".*team (.+) pro.*", "\\1", df$team) #view updated data frame df team points team_name 1 team Mavs pro 114 Mavs 2 team Heat pro 135 Heat 3 team Nets pro 119 Nets
Notez que la nouvelle colonne appelée team_name contient la chaîne entre les caractères team et pro pour chaque ligne de la colonne team du bloc de données.
Connexe : Une introduction à gsub() dans R
Exemple 2 : Extraire une chaîne entre des caractères spécifiques à l’aide du package stringr
Le code suivant montre comment extraire la chaîne entre les caractères team et pro pour chaque ligne de la colonne team du bloc de données en utilisant la fonction str_match() du package stringr dans R :
library(stringr) #create new column that extracts string between team and pro df$team_name <- str_match(df$team, "team\\s*(.*?)\\s*pro")[,2] #view updated data frame df team points team_name 1 team Mavs pro 114 Mavs 2 team Heat pro 135 Heat 3 team Nets pro 119 Nets
Notez que la nouvelle colonne appelée team_name contient la chaîne entre les caractères team et pro pour chaque ligne de la colonne team du bloc de données.
Cela correspond aux résultats de l’utilisation de la fonction gsub() en base R.
Notez que la fonction str_match() renvoie une matrice dans laquelle la première colonne contient les chaînes d’origine et la deuxième colonne contient la sous-chaîne qui nous intéresse.
Ainsi, il faut utiliser [,2] pour extraire uniquement la deuxième colonne de la matrice renvoyée par la fonction str_match() .
Ressources additionnelles
Les didacticiels suivants expliquent comment effectuer d’autres tâches courantes dans R :
Comment sélectionner des colonnes contenant une chaîne spécifique dans R
Comment supprimer des caractères d’une chaîne dans R
Comment trouver l’emplacement du caractère dans une chaîne dans R