Извлечение n-го символа до конца строки в R - PullRequest
0 голосов
/ 06 февраля 2020

Я пытаюсь извлечь n-й символ в строке, используя R. Вот мои данные:

StringField
example_string1
example_string2
example_string3
example_string4
example_string5
example_string6
example_string7
example_string8
example_string9
example_string10
example_string11
example_string12

Я хочу извлечь только цифры после example_string, поэтому результат будет:

1
2
3
4
5
6
7
8
9 
10
11
12

Я пробовал что-то вроде:

df$unique_number <- substr(df$stringField, 15:) 

, чтобы указать, что я хочу все, начиная с 15-й позиции и до конца строки. Есть какие-нибудь мысли о простом способе выполнения sh того, что я пытаюсь сделать? спасибо!

Ответы [ 5 ]

4 голосов
/ 06 февраля 2020

Вот простой вариант использования sub. Мы можем зафиксировать последние цифры на входе, а затем заменить их только на это количество.

x <- "example_string10"
num <- sub("^.*?(\\d+)$", "\\1", x)
num

[1] "10"
1 голос
/ 06 февраля 2020
df %>% tidyr::extract(StringField, into = "nmb", "([0-9]+)")
1 голос
/ 06 февраля 2020

Замените каждый non-di git (\D) пустой строкой и преобразуйте в цифру c:

transform(df, unique_number = as.numeric(gsub("\\D", "", StringField)))

Примечание

Мы использовали это как ввод:

df <- data.frame(StringField = c("example_string1", "example_string2",
  "example_string3"), stringsAsFactors = FALSE)
1 голос
/ 06 февраля 2020
x <- "example_string10"
substr(x, 15, 20)
#> [1] "10"

Создано в 2020-02-06 пакетом Представления (v0.3.0)

1 голос
/ 06 февраля 2020

Если вы заинтересованы в извлечении только чисел из строки, это может быть решением:

library(stringr)

as.numeric(str_extract(df$stringField,"\\d+"))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...