如何在R中的列上提取子字符串,删除所有%字符

时间:2019-05-08 00:44:21

标签: r

我的数据就像

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

现在,我要删除此列中的所有%3ABC,只保留%之前的数字 非常感谢。

3 个答案:

答案 0 :(得分:2)

我们可以只使用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")

答案 1 :(得分:0)

stationary=T包中尝试以下操作:

m2

答案 2 :(得分:0)

如果每个值中都有"%3ABC",则可以使用sub删除它

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

或更普遍地

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

如果需要将它们包装为数字,可以将其包装在as.integer / as.numeric中。