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

Ajouter un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *