Hoe een string tussen specifieke karakters in r te extraheren
U kunt de volgende methoden gebruiken om een tekenreeks tussen specifieke tekens in R te extraheren:
Methode 1: Extraheer de tekenreeks tussen specifieke tekens met behulp van Base R
gsub(" .*char1 (.+) char2.*", "\\1 ", my_string)
Methode 2: Extraheer de tekenreeks tussen specifieke tekens met behulp van stringr
library (stringr) str_match(my_string, " char1\\s*(.*?)\\s*char2 ")[,2]
Deze twee voorbeelden extraheren de string tussen char1 en char2 in my_string .
De volgende voorbeelden laten zien hoe u elke methode in de praktijk kunt gebruiken met het volgende dataframe:
#create data frame
df <- data. frame (team=c('team Mavs pro', 'team Heat pro', 'team Nets pro'),
dots=c(114, 135, 119))
#view data frame
df
team points
1 Mavs pro team 114
2 team Heat pro 135
3 pro Nets team 119
Voorbeeld 1: Extraheer een tekenreeks tussen specifieke tekens met behulp van Base R
De volgende code laat zien hoe u de tekenreeks tussen de team- en pro- tekens extraheert voor elke rij in de teamkolom van het dataframe:
#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 Mavs pro team 114 Mavs 2 team Heat pro 135 Heat 3 Nets pro team 119 Nets
Houd er rekening mee dat de nieuwe kolom met de naam teamnaam de tekenreeks tussen de team- en pro- tekens bevat voor elke rij in de teamkolom van het dataframe.
Gerelateerd : Een inleiding tot gsub() in R
Voorbeeld 2: Extraheer een string tussen specifieke tekens met behulp van het stringr-pakket
De volgende code laat zien hoe u de tekenreeks tussen de team- en pro- tekens kunt extraheren voor elke rij in de teamkolom van het dataframe met behulp van de str_match() functie van het stringr- pakket in 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 Mavs pro team 114 Mavs 2 team Heat pro 135 Heat 3 Nets pro team 119 Nets
Houd er rekening mee dat de nieuwe kolom met de naam teamnaam de tekenreeks tussen de team- en pro- tekens bevat voor elke rij in de teamkolom van het dataframe.
Dit komt overeen met de resultaten van het gebruik van de functie gsub() in basis R.
Merk op dat de functie str_match() een matrix retourneert waarin de eerste kolom de originele tekenreeksen bevat en de tweede kolom de betreffende subtekenreeks bevat.
We moeten dus [,2] gebruiken om alleen de tweede kolom te extraheren uit de matrix die wordt geretourneerd door de functie str_match() .
Aanvullende bronnen
In de volgende tutorials wordt uitgelegd hoe u andere veelvoorkomende taken in R kunt uitvoeren:
Hoe u kolommen selecteert die een specifieke tekenreeks bevatten in R
Hoe tekens uit een string in R te verwijderen
Hoe de tekenlocatie in een string in R te vinden