提取R中的数值(从自由文本)

提取R中的数值(从自由文本),r,regex,stringr,R,Regex,Stringr,我试图从一个向量中提取年龄(数值),尝试了以下方法,但是力起作用了 例如:- a <- "age-32 agge32 age 45 aage 56 agee 34" b <- gsub("[Aa]g.e?"," age ",a) sa <- strsplit(x=b, split="\\s") age <- stringr::str_extract(sa, "(age?)(\\s[^\\s]+){1}") (or) age

我试图从一个向量中提取年龄(数值),尝试了以下方法,但是力起作用了

例如:-

    a <- "age-32 agge32 age 45 aage 56 agee 34"
    b <- gsub("[Aa]g.e?"," age ",a)
    sa <- strsplit(x=b, split="\\s")
    age <- stringr::str_extract(sa, "(age?)(\\s[^\\s]+){1}")
     (or)
    age <- grep("(([^\\s]+\\s){0}(age)(\\s[^\\s]+){1})",sel,value = TRUE)

a这就是你想要的吗:

library(stringr)

as.numeric(str_extract_all(a,"\\d+")[[1]])
或者使用
gregexpr
regmatches
BASE R

as.numeric(regmatches(a,gregexpr("\\d+",a))[[1]])
as.numeric(grep("\\d+",strsplit(a,split=" |-|[a-zA-Z]")[[1]],value=T))
[1] 32 32 45 56 34
或者在基本R中使用
grep
strsplit

as.numeric(regmatches(a,gregexpr("\\d+",a))[[1]])
as.numeric(grep("\\d+",strsplit(a,split=" |-|[a-zA-Z]")[[1]],value=T))
[1] 32 32 45 56 34
输出

as.numeric(regmatches(a,gregexpr("\\d+",a))[[1]])
as.numeric(grep("\\d+",strsplit(a,split=" |-|[a-zA-Z]")[[1]],value=T))
[1] 32 32 45 56 34

如果要提取所有数字,请尝试
str_extract_all(a,“\\d+”)
。感谢早期的更新,但实际上自由文本包含其他数字,如日期、位置地址、Pincode等。我想提取年龄(数字),后跟字符,如“age | agge | age-| agee | age”示例:-对不起,我的错误,要求是。我只想提取年龄(数字),后面跟有字符,如“age | agge | age-| agee | age”一个stru摘录(str | extract | all(a),(?>age | agg)。+?\\d+”[1],”\\‌​‌​d+))输出:[1]NA预期输出为:52 42 9 6..早期更新需要Samethaks方面的帮助,但实际上自由文本包含其他数字,如日期、位置地址、Pincode等。我想提取年龄(数字),后面跟着字符,如“age | agge | age-| agee | age”示例:-a@BalajiS,一个谦虚的要求,当你问一个问题时,把所有的东西都放进去,我怎么知道你的数据有日期等等。你从来没有在那里提到过,现在这个问题已经被投票通过了,即使有人想帮你,也无法帮你。根据您的解决方案,您可以尝试以下操作:
library(stringr);str_extract(str_extract_all(a),“(?>age | agg)。\\d+”[[1]],“\\d+”
,这应该适用于注释中提供的给定字符串。此外,如果此解决方案有效,请使用绿色勾号将答案标记为已接受。@BalajiS
library(stringr)
str_extract(str_extract_all(a,“(?>age | agg)。+?\\d+”[[1]],“\\d+”)
,如果您对age有不同的拼写,请在用pipe delimeter分隔的lookaround表达式中添加任何您想要的age版本。谢谢Kumar。。我如上所述进行了尝试,但无法>str_extract(str_extract_all(a,“(?>age | agg)。+?\\d+”[[1]],”\\‌​输出:[1]NA预期输出为:52 42 9 6需要sameYes复制和粘贴力方面的帮助(一些“点”出现在中间)。我按照你的建议打字,效果很好:)非常感谢库马尔。!!!:)