R中的正则表达式问题与gsub – 重新格式化字符串向量到数字
发布时间:2020-12-14 05:36:52 所属栏目:百科 来源:网络整理
导读:我试图采用格式不佳的美元值的字符向量并将其转换为数字.值的格式如下所示,带有前导和尾随空格,逗号和美元符号: x - c(" 18,000.50 "," $1,240.30 "," $125.00 ") 我试图使用以下函数来摆脱除数字和点之外的所有字符,但它不起作用: trim_currency - functi
我试图采用格式不佳的美元值的字符向量并将其转换为数字.值的格式如下所示,带有前导和尾随空格,逗号和美元符号:
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.]*) 使用此正则表达式测试程序成功运行 当我在R中运行它时,我收到以下错误: Error: '$' is an unrecognized escape in character string starting "$" 关于如何在R中做到这一点的任何想法? 感谢ndoogan的回应.这解决了这个特殊问题.但是,如果我想让它更通用,我会问: 我如何使用R / regex通过过滤器运行向量,只允许数字和句点通过? 解决方法x <- c(" 18," $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 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |