Jak wyodrębnić ciąg znaków między określonymi znakami w r
Możesz użyć następujących metod, aby wyodrębnić ciąg znaków pomiędzy określonymi znakami w R:
Metoda 1: Wyodrębnij ciąg znaków między określonymi znakami, używając Base R
gsub(" .*char1 (.+) char2.*", "\\1 ", my_string)
Metoda 2: Wyodrębnij ciąg znaków między określonymi znakami za pomocą stringr
library (stringr) str_match(my_string, " char1\\s*(.*?)\\s*char2 ")[,2]
Te dwa przykłady wyodrębniają ciąg znaków między char1 i char2 do my_string .
Poniższe przykłady pokazują, jak w praktyce zastosować każdą metodę z następującą ramką danych:
#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
Przykład 1: Wyodrębnij ciąg znaków pomiędzy określonymi znakami, używając Base R
Poniższy kod pokazuje, jak wyodrębnić ciąg znaków pomiędzy znakami zespołu i profesjonalisty dla każdego wiersza w kolumnie zespołu w ramce danych:
#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
Zwróć uwagę, że nowa kolumna o nazwie nazwa_zespołu zawiera ciąg znaków pomiędzy znakami zespołu i profesjonalisty w każdym wierszu kolumny zespołu w ramce danych.
Powiązane : Wprowadzenie do gsub() w R
Przykład 2: Wyodrębnij ciąg znaków pomiędzy określonymi znakami za pomocą pakietu stringr
Poniższy kod pokazuje, jak wyodrębnić ciąg znaków pomiędzy znakami zespołu i profesjonalisty dla każdego wiersza kolumny zespołu w ramce danych przy użyciu funkcji str_match() pakietu stringr w 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
Zwróć uwagę, że nowa kolumna o nazwie nazwa_zespołu zawiera ciąg znaków pomiędzy znakami zespołu i profesjonalisty w każdym wierszu kolumny zespołu w ramce danych.
Odpowiada to wynikom użycia funkcji gsub() w bazie R.
Należy zauważyć, że funkcja str_match() zwraca macierz, w której pierwsza kolumna zawiera oryginalne ciągi, a druga kolumna zawiera interesujący podciąg.
Dlatego musimy użyć [,2] , aby wyodrębnić tylko drugą kolumnę z macierzy zwróconej przez funkcję str_match() .
Dodatkowe zasoby
Poniższe samouczki wyjaśniają, jak wykonywać inne typowe zadania w języku R:
Jak wybrać kolumny zawierające określony ciąg w R
Jak usunąć znaki z ciągu w R
Jak znaleźć lokalizację znaku w ciągu w R