我有一组字符串,所有的字符串都带有4位数字,例如:
“ FTMS + c NSI完整ms [364.0000-391.0000]”
我想将所有数字都转换为只有2位数字,以使其变为
“ FTMS + c NSI完整ms [364.00-391.00]”
字符串没有特定的结构。有一个简单的一站式解决方案吗?
答案 0 :(得分:1)
这应该有效:
library(stringr)
x = "FTMS + c NSI Full ms [364.0000-391.0000]"
str_replace_all(x, "([0-9]+\\.[0-9]{2})[0-9]+", "\\1")
# [1] "FTMS + c NSI Full ms [364.00-391.00]"
我们寻找
的模式我们匹配上述所有内容,并将其替换为第一个捕获组(第一个项目符号)。
答案 1 :(得分:0)
这仅使用一种简单的模式来匹配表示代表数字的字符串,该数字具有小数,将每个这样的匹配转换为数字,并使用sprintf
来格式化2个小数。
library(gsubfn)
gsubfn("\\d+\\.\\d+", ~ sprintf("%.2f", as.numeric(x)), s)
## [1] "FTMS + c NSI Full ms [364.00-391.00]"
一个基本解决方案是将要保留的部分与剩余的数字相匹配,然后仅保留要保留的部分。
gsub("(\\d+\\.\\d{2})\\d+", "\\1", s)
## [1] "FTMS + c NSI Full ms [364.00-391.00]"
输入为:
s <- "FTMS + c NSI Full ms [364.0000-391.0000]"