замена всех символов между двумя образцами в r - PullRequest
0 голосов
/ 13 марта 2019

У меня есть фрейм данных со следующим столбцом:

  Col_A
tr_1 A1; gn_1 TG1;
tr_2 A2; gn_2 TG2;
tr_3 A3; gn_3 TG3;
tr_4 A4; gn_4 TG4;
tr_5 A5; gn_5 TG5;

Я хотел бы использовать команду gsub и регулярное выражение для удаления всех символов от начала до конца строки "gn_1" во всехстроки фрейма данных.Или замените все эти символы на "".

То, что я хотел бы, чтобы в конце выглядело так:

 Col_A
 TG1
 TG2
 TG3
 TG4
 TG5

У вас есть идеи, как я могу сделать это в r.

Ответы [ 3 ]

3 голосов
/ 13 марта 2019

Следующее регулярное выражение будет делать то, что вы хотите.

sub("^.*gn_\\d+\\s([[:alnum:]]+).*$", "\\1", df1$Col_A)
#[1] "TG1" "TG2" "TG3" "TG4" "TG5"

Данные в формате dput.

df1 <-
structure(list(Col_A = structure(1:5, 
.Label = c("tr_1 A1; gn_1 TG1;", "tr_2 A2; gn_2 TG2;", 
"tr_3 A3; gn_3 TG3;", "tr_4 A4; gn_4 TG4;", 
"tr_5 A5; gn_5 TG5;"), class = "factor")), 
class = "data.frame", row.names = c(NA, -5L))
1 голос
/ 13 марта 2019

Вы всегда можете использовать пакет stringi:

library(stringi)
stri_extract_last_words(df1$Col_A)
[1] "TG1" "TG2" "TG3" "TG4" "TG5"

РЕДАКТИРОВАТЬ: просто перечитайте ваш вопрос (предполагается, что после gn_# всегда есть одно слово, используйте его с осторожностью)

0 голосов
/ 13 марта 2019

Я получил то, что хочу, с помощью следующей команды.Я публикую это здесь, если кто-то ищет ответ.

DF$col <- gsub("^tr.*gn_. ", "", DF$col)

DF$col <- gsub(";", "", DF$col)

...