gpt4 book ai didi

R 中带有 gsub 的正则表达式问题 - 将字符串向量重新格式化为数字

转载 作者:行者123 更新时间:2023-12-01 07:43:58 24 4
gpt4 key购买 nike

我正在尝试采用格式不正确的美元值字符向量并将其转换为数字。这些值的格式如下面的向量,带有前导空格和尾随空格、逗号和美元符号:

x <- c(" 18,000.50 ", " $1,240.30 ", " $125.00 ")

我正在尝试使用以下函数来删除除数字和点以外的所有字符,但它不起作用:

trim_currency <- function(x) grep("\$([0-9.]*)\,([0-9.]*)", x, values=TRUE)

我得到了正则表达式代码

\$([0-9.]*)\,([0-9.]*)

使用这个正则表达式测试器成功运行 http://regex101.com/r/qM2uG0

当我在 R 中运行它时,出现以下错误:

Error: '\$' is an unrecognized escape in character string starting "\$"

关于如何在 R 中执行此操作的任何想法?


感谢 ndoogan 的回复。这解决了这个特定问题。但是,如果我想让它更通用,我会问:

我如何使用 R/regex 通过过滤器运行向量,只允许数字和句点通过?

最佳答案

x <- c(" 18,000.50 ", " $1,240.30 ", " $125.00 ")
gsub("[,$ ]","",x)
#[1] "18000.50" "1240.30" "125.00"

在括号内添加更多字符以消除不同的东西。我假设示例 x 在这里是详尽无遗的。

更新

如果您知道自己只对数字和小数点感兴趣,那么您可以这样做:

gsub("[^0-9.]","",x)
#[1] "18000.50" "1240.30" "125.00"

方括号内的^否定方括号中语句的含义。

最后,要将结果值转换为数字形式,请将 gsub() 函数(或包含其输出的对象)包装在 as.numeric() 中:

as.numeric(gsub("[^0-9.]","",x))
#[1] 18000.5 1240.3 125.0

关于R 中带有 gsub 的正则表达式问题 - 将字符串向量重新格式化为数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16368120/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com