Как извлечь подстроку в столбце в R, удалить все после символа% - PullRequest
1 голос
/ 08 мая 2019

Мои данные похожи на

> head(data$ID)
[1] "1%3ABC" "2%3ABC" "3%3ABC" "8%3ABC" "9%3ABC" "12%3ABC"

Теперь я хочу вырезать все %3ABC, в этом столбце останется только число до % Большое спасибо.

Ответы [ 3 ]

2 голосов
/ 08 мая 2019

Мы можем просто использовать parse_number из readr

library(readr)
parse_number(v1)
#[1]  1  2  3  8  9 12

Или используя sub из base R для захвата чисел в начале строки

as.integer(sub("^(\\d+).*", "\\1", v1))
#[1]  1  2  3  8  9 12

Или используя regmatches/regexpr из base R

as.integer(regmatches(v1, regexpr("^\\d+", v1)))

Или с str_remove из stringr

library(stringr)
as.integer(str_remove(v1, "%.*"))
#[1]  1  2  3  8  9 12

или от stringi

library(stringi)
as.integer(stri_extract_first_regex(v1, "\\d+"))
#[1]  1  2  3  8  9 12

данные

v1 <- c("1%3ABC", "2%3ABC", "3%3ABC", "8%3ABC", "9%3ABC", "12%3ABC")
0 голосов
/ 08 мая 2019

Если у нас есть "%3ABC" в каждом значении, мы можем использовать sub для его удаления

sub("%3ABC", "", data$ID)

ИЛИ в более общем смысле,

sub("%.*", "", data$ID)

Вы можете заключить его в as.integer / as.numeric если они вам нужны как числа.

0 голосов
/ 08 мая 2019

Попробуйте это из пакета purrr:

library(purrr)
str_split_fixed(data$ID, "%", 2)[,1]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...