Как удалить строку перед последним конкретным символом - PullRequest
0 голосов
/ 04 декабря 2018

Скажем, у меня есть такая строка

"Delete:Delete:Delete:Keep"

Как мне это почистить, чтобы остался только "Сохранить".Кроме того, как я могу применить это ко всему столбцу.

Я хочу сохранить строку после последнего двоеточия, в одной ячейке может быть от 1 до 4 двоеточий

Спасибо

Ответы [ 3 ]

0 голосов
/ 04 декабря 2018

Вы также можете использовать strsplit

# d is your column
d <- c("Delete:Delete:Delete:Keep","Delete:Delete:Delete:Keep","Delete:Delete:Delete:Keep")

sapply(d, function(x) tail(unlist(strsplit(x, ":")), 1), USE.NAMES = F)
[1] "Keep" "Keep" "Keep"
0 голосов
/ 04 декабря 2018

альтернативно,

x = "Delete:Delete:Delete:Keep"

sub(".*:(?=[^:]+$)", "", x, perl = TRUE)

или

sub(".*?(?=[^:]+$)", "", x, perl = TRUE)

понятия регулярного выражения:

ленивый квантификатор, позитивный взгляд

0 голосов
/ 04 декабря 2018

Вы можете использовать

sub(".*:(.*)", "\\1", "Delete:Delete:Delete:Keep")
# [1] "Keep"

и аналогично для столбца:

df$col <- sub(".*:(.*)", "\\1", df$col)

Вот как это работает: .* соответствует всему до последнего : из-за жадного соответствия,Затем (.*) захватывает все после последнего :, то есть это становится нашим окончательным значением.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...