Удалить все символы до периода в строке

Это сохраняет все до периода:

gsub("\\..*","", data$column )

как сохранить все после периода?

Ответ 1

Чтобы удалить все символы до периода в строке (включая период).

gsub("^.*\\.","", data$column )

Пример:

> data <- 'foobar.barfoo'
> gsub("^.*\\.","", data)
[1] "barfoo"

Чтобы удалить все символы до первого периода (включая период).

> data <- 'foo.bar.barfoo'
> gsub("^.*?\\.","", data)
[1] "bar.barfoo"

Ответ 2

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

 library(stringi)
 stri_extract_first_regex(data1, "(?<=\\.).*")
 #[1] "bar.barfoo"
 stri_extract_first_regex(data, "(?<=\\.).*")
 #[1] "barfoo"

Если строка не имеет ., это перенастраивает NA (неясно, как это решить в вопросе)

 stri_extract_first_regex(data2, "(?<=\\.).*")
 #[1] NA

###data
data <- 'foobar.barfoo' 
data1 <- 'foo.bar.barfoo'
data2 <- "foobar"

Ответ 3

используйте это:

gsub(".*\\.","", data$column )

это будет держать все после периода

Ответ 4

Если вы не хотите думать об этом регулярном выражении, пакет qdap имеет функцию char2end, которая захватывает определенный символ до конца строки.

data <- c("foo.bar", "foo.bar.barfoo")

library(qdap)
char2end(data, ".")

## [1] "bar"        "bar.barfoo"

Ответ 5

require(stringr)

Я провел курс по анализу данных, и студенты придумали это решение:

get_after_period <- function(my_vector) {    

        # Return a string vector without the characters
        # before a period (excluding the period)

        # my_vector, a string vector

        str_sub(my_vector, str_locate(my_vector, "\\.")[,1]+1) 

        }

Теперь просто вызовите функцию:

my_vector <-  c('foobar.barfoo', 'amazing.point')

get_after_period(my_vector)

[1] "barfoo" "point"