如何提取具有前导字符和值的单位的数字?

时间:2018-01-14 06:56:48

标签: r regex

使用前导字符(如果存在)以及带有或不带空格的单位提取数字的最快最简单的方法是什么?

res <- c("Diam MM = 2.6 cm.","Mild  (<2mm).")

value <- as.numeric(str_extract(res, "[[:digit:]]+\\.*[[:digit:]]+(?=[ ]?(cm|mm)?)"))

但我只得到:[1] 2.6 NA

如何添加2.6 cm<2mm

2 个答案:

答案 0 :(得分:1)

您可以尝试使用gsub

res <- c("Diam MM = 2.6 cm.","Mild  (<2mm).")
gsub(".*?([<>=]*\\d+(?:\\.\\d+)?\\s*\\w+).*", "\\1", res)

答案 1 :(得分:0)

使用stringr包的简单解决方案:

res %>%
  str_replace_all(" ", "") %>%
  str_extract("[<>=].+[cm|mm]")

唯一的区别是此解决方案保留=

但很难知道这种情况如何在没有看到更多数据的情况下推广到您的数据。