Удалить любой текст перед последней запятой - PullRequest
1 голос
/ 28 апреля 2020

Имея такой фрейм данных:

data.frame(id = c(1,2,3,4), text = c("text, another, end","not, keep","not, to keep, this","finally, chance, to, check"))

Как можно определить, какая последняя запятая в текстовом столбце каждой строки, и удалить все, что было до этого.

Пример ожидаемого выхода:

data.frame(id = c(1,2,3,4), text = c("end","keep","this","check"))

Ответы [ 3 ]

2 голосов
/ 28 апреля 2020

Используя sub, мы можем удалить весь контент, вплоть до последней запятой, включая любые пробелы, которые могут следовать за этой последней запятой.

df$text <- sub("^.*,\\s*", "", df$text)
df

id  text
1  1   end
2  2  keep
3  3  this
4  4 check

Данные:

df <- data.frame(id = c(1,2,3,4),
                 text = c("text, another, end","not, keep",
                          "not, to keep, this","finally, chance, to, check"))
1 голос
/ 28 апреля 2020

База R, более подробный, менее эффективный, без регулярных выражений:

df <- sapply(strsplit(as.character(df$text), ", "), function(x){x[length(x)]})
1 голос
/ 28 апреля 2020

регулярные выражения по умолчанию жадные по своей природе, поэтому вам не нужно искать последнюю запятую как таковую

sub('.*, ', '', df$text)
#[1] "end"   "keep"  "this"  "check"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...