Як витягти рядок між певними символами в r
Щоб витягти рядок між певними символами в R, можна використовувати такі методи:
Спосіб 1. Витягніть рядок між певними символами за допомогою Base R
gsub(" .*char1 (.+) char2.*", "\\1 ", my_string)
Спосіб 2: Витягніть рядок між певними символами за допомогою stringr
library (stringr) str_match(my_string, " char1\\s*(.*?)\\s*char2 ")[,2]
Ці два приклади витягують рядок між char1 і char2 у my_string .
У наведених нижче прикладах показано, як використовувати кожен метод на практиці з таким кадром даних:
#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
Приклад 1: вилучення рядка між певними символами за допомогою Base R
Наступний код показує, як витягти рядок між символами team і pro для кожного рядка в стовпці team кадру даних:
#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
Зауважте, що новий стовпець під назвою team_name містить рядок між символами team і pro для кожного рядка в стовпці team кадру даних.
Пов’язане : знайомство з gsub() у R
Приклад 2: Витягніть рядок між певними символами за допомогою пакета stringr
Наступний код показує, як витягти рядок між символами team і pro для кожного рядка в стовпці team кадру даних за допомогою функції str_match() пакета stringr у 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
Зауважте, що новий стовпець під назвою team_name містить рядок між символами team і pro для кожного рядка в стовпці team кадру даних.
Це відповідає результатам використання функції gsub() у базовому R.
Зауважте, що функція str_match() повертає матрицю, у якій перший стовпець містить оригінальні рядки, а другий стовпець містить підрядок, який вас цікавить.
Таким чином, ми повинні використовувати [,2] , щоб отримати лише другий стовпець із матриці, яку повертає функція str_match() .
Додаткові ресурси
У наступних посібниках пояснюється, як виконувати інші типові завдання в R:
Як вибрати стовпці, що містять певний рядок у R
Як видалити символи з рядка в R
Як знайти розташування символу в рядку в R