Как извлечь строку между определенными символами в 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
Следующий код показывает, как извлечь строку между символами команды и профессионала для каждой строки в столбце команды фрейма данных:
#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 содержит строку между символами команды и профессионала для каждой строки в столбце команды фрейма данных.
Связано : Введение в gsub() в R
Пример 2. Извлечение строки между определенными символами с помощью пакета stringr.
Следующий код показывает, как извлечь строку между символами команды и профессионала для каждой строки в столбце команды фрейма данных с помощью функции 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 содержит строку между символами команды и профессионала для каждой строки в столбце команды фрейма данных.
Это соответствует результатам использования функции gsub() в базе R.
Обратите внимание, что функция str_match() возвращает матрицу, в которой первый столбец содержит исходные строки, а второй столбец — интересующую подстроку.
Таким образом, мы должны использовать [,2] для извлечения только второго столбца из матрицы, возвращаемой функцией str_match() .
Дополнительные ресурсы
В следующих руководствах объясняется, как выполнять другие распространенные задачи в R:
Как выбрать столбцы, содержащие определенную строку в R
Как удалить символы из строки в R
Как найти местоположение символа в строке в R