如何从R中的字符向量中提取数字?
我有一个字符向量,我想从中获取一个整数和浮点数如何从R中的字符向量中提取数字?,r,R,我有一个字符向量,我想从中获取一个整数和浮点数 a <- c("Sam is 5 years old", "Ram is 3.7 years old" , "John is 17 years 2 months old") 我们可以使用readr readr::parse_number(a) #[1] 5.0 3.7 17.0 更新 基于OP的新例子 library(stringr) sapply(str_extract_all(a, "[0-9]+\\s+(years|mo
a <- c("Sam is 5 years old", "Ram is 3.7 years old" , "John is 17 years 2 months old")
我们可以使用
readr
readr::parse_number(a)
#[1] 5.0 3.7 17.0
更新
基于OP的新例子
library(stringr)
sapply(str_extract_all(a, "[0-9]+\\s+(years|months)"), function(x) {
x1 <- readr::parse_number(x)
head(if(length(x1)==2) x1 + round(x1[2]/12, 1) else x1, 1)})
#[1] 5.0 7.0 17.2
这是一条单行线
as.numeric(gsub(' ', '.', trimws(gsub('\\D+', ' ', a))))
#[1] 5.0 3.7 17.2
对代码进行了一些更改。我希望在输出中将月份转换为浮点值,这在parse_number中是不可能的。@AkshayNevrekar假设,如果您的月份是1年9个月,将是什么output@AkshayNevrekar我更新了帖子。请检查这是否是你想要的
as.numeric(sapply(regmatches(a, gregexpr('[0-9]+', a)), paste, collapse="."))
#[1] 5.0 3.7 17.2
as.numeric(gsub(' ', '.', trimws(gsub('\\D+', ' ', a))))
#[1] 5.0 3.7 17.2