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?)

下一篇: convert raw data file to RData file