在 R 中提取数值(来自自由文本)
Extracting Numeric Values in R (from a Free text)
我正在尝试从向量中提取年龄(数值),尝试了以下方法但没有成功
示例:-
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)
这是你想要的吗:
library(stringr)
as.numeric(str_extract_all(a,"\d+")[[1]])
或使用 gregexpr
和 regmatches
BASE R:
as.numeric(regmatches(a,gregexpr("\d+",a))[[1]])
或在 BASE R 中使用 grep
和 strsplit
:
as.numeric(grep("\d+",strsplit(a,split=" |-|[a-zA-Z]")[[1]],value=T))
输出:
[1] 32 32 45 56 34
我正在尝试从向量中提取年龄(数值),尝试了以下方法但没有成功
示例:-
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)
这是你想要的吗:
library(stringr)
as.numeric(str_extract_all(a,"\d+")[[1]])
或使用 gregexpr
和 regmatches
BASE R:
as.numeric(regmatches(a,gregexpr("\d+",a))[[1]])
或在 BASE R 中使用 grep
和 strsplit
:
as.numeric(grep("\d+",strsplit(a,split=" |-|[a-zA-Z]")[[1]],value=T))
输出:
[1] 32 32 45 56 34