在R中的某个字符串后面提取数字

时间:2016-02-02 19:51:35

标签: r string

如果我在R中有一个字符串,比如说,

x1 <- "abcAGE 13 dafkdj"  # I want to get 13

我希望在&#34; AGE&#34;之后提取13号从中。数字可能有一位数或多位数。在&#34; AGE&#34;之后也可能没有空间。 &#34; 13&#34;之后没有空格。例如,

x2 <- "abcAGE7 dafkdj"  # I want to get 7
x3 <- "abcAGE 189dafkdj"  # I want to get 189

如何在R中获得该号码?感谢。

现在,如果字符串有两个&#34; AGE&#34; s,例如,

x4 <- "abcAGE7 dafkdjAGE25ijdfkdf"  # I want to get 7 and 25

如何获得这两个数字?

1 个答案:

答案 0 :(得分:2)

sHere是一个使用sub并提取捕获组的选项:

> sub(".*AGE ?(\\d+).*", "\\1", x1)
[1] "13"
> sub(".*AGE ?(\\d+).*", "\\1", x2)
[1] "7"
> sub(".*AGE ?(\\d+).*", "\\1", x3)
[1] "189"

将其包裹在as.numeric / as.integer中以根据需要进行转换。

对于稍微复杂的x4案例,您可以使用

trimws(regmatches(x4, gregexpr("(?<=AGE) ?\\d+", x4, perl=TRUE))[[1]])
[1] "7"  "25"