Как извлечь строку между определенными символами в 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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *