仅提取逗号之间的数字

时间:2017-12-06 02:58:22

标签: r regex gsub

我的代码中有一个返回的字符串:(<C1>, 4.297, %) 我试图使用gsub命令从该字符串中仅提取值4.297:

Fat<-gsub("\\D", "", stringV)

然而,这不仅提取了4.297,而且提取了数字&#39; 1&#39;在C1。 有没有办法从这个字符串中提取4.297,请帮助。

由于

4 个答案:

答案 0 :(得分:3)

这个怎么样?

# Your sample character string
ss <- "(<C1>, 4.297, %)";

gsub(".+,\\s*(\\d+\\.\\d+),.+", "\\1", ss)
#[1] "4.297"

gsub(".+,\\s*([0-9\\.]+),.+", "\\1", ss)

如有必要,请使用as.numeric转换为数字。

答案 1 :(得分:2)

另一个选项是str_extract,以便将一个或多个数字元素与.匹配,并以字边界开头,后跟字边界(\\b

library(stringr)
as.numeric(str_extract(stringV, "\\b[0-9.]+\\b"))
#[1] 4.297

如果有多个号码,请使用str_extract_all

数据

stringV <- "(<C1>, 4.297, %)"

答案 2 :(得分:2)

另一种方法是将您的矢量视为逗号分隔变量,并使用read.csv

df <- read.csv(text = stringV, colClasses = c("character", "numeric", "character"), header = F)
    V1    V2  V3
1 (<C1> 4.297  %)

此方法依赖于向量中“第二”位置的“数字”。

答案 3 :(得分:2)

您可以使用as.numeric将无数字字符串转换为NA

ss <- as.numeric(unlist(strsplit(stringV, ',')))
ss[!is.na(ss)]
#[1] 4.297