Excel导入后清理混合十进制分隔符(gsub也许?)
我需要阅读几个Excel文件并使用gdata包。 不幸的是,这些文件是懒洋洋地编写的,有些用“,”十进制/千分隔符,一些用“。”。 有的没有。
为了给你一个想法,数字可以像这样:
#Five Times 1000.1 and four times 1000.0
x <- c("1,000.1","1.000.1","1000.1","1000,1","1.000,1","1000","1,000","1.000","1000.0")
x
有没有一种通用的方法分别将它们转换为1000.1和1000.0? 我想过使用gsub()和一个正则表达式。
第一个gsub()用“。”替换“,”。 对于第二个gsub(),可能会以所有“。”的方式完成正则表达式。 右边有三个数字被删除,而另一个“。” 被存管。
然而,我不熟悉正则表达式,不知道该怎么做。 任何人都可以帮忙吗? 有没有更简单的方法来清洁Excel表格?
谢谢!
例如使用gsub
:
as.numeric(gsub('([0-9])[,|.]?([0-9]{3})[,|.]?','12.',x))
[1] 1000.1 1000.1 1000.1 1000.1 1000.1 1000.0 1000.0 1000.0 1000.0
对于这个特定的情况,你甚至可以简化正则表达式来:
as.numeric(gsub('^(1)[,|.]?(0{3})[,|.]?','12.',x))
在这里,我去除了最后一个正则表达式:
^ | 1 | [,|.]? | 0{3} | [,|.]? | (0|1)?
beginwith | 1 | comma or point | 3 zeros | comma or point | 0 or 1 or nothing
链接地址: http://www.djcxy.com/p/6529.html
上一篇: Cleaning mixed decimal separators after Excel import (gsub maybe?)