我的数据就像
> head(data$ID)
[1] "1%3ABC" "2%3ABC" "3%3ABC" "8%3ABC" "9%3ABC" "12%3ABC"
现在,我要删除此列中的所有%3ABC
,只保留%
之前的数字
非常感谢。
答案 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
中。