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

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *