当一些数字包含逗号作为千位分隔符时如何读取数据?

我有一个csv文件,其中一些数值用逗号表示为千位分隔符,例如"1,513"而不是1513 。 将数据读入R的最简单方法是什么?

我可以使用read.csv(..., colClasses="character") ,但是在将这些列转换为数字之前,我必须从相关元素中read.csv(..., colClasses="character")逗号,并且我找不到完成该操作的方法。


不知道如何让read.csv正确解释它,但可以使用gsub","替换为"" ,然后使用as.numeric将该字符串转换为numeric

y <- c("1,200","20,000","100","12,111")
as.numeric(gsub(",", "", y))
# [1]  1200 20000 100 12111

这也在R-Help(以及第二季度)中得到了答复。

或者,您可以预先处理该文件,例如使用unix中的sed


你可以让read.table或read.csv为你做半自动的转换。 首先创建一个新的类定义,然后创建一个转换函数,并使用setAs函数将其设置为“as”方法,如下所示:

setClass("num.with.commas")
setAs("character", "num.with.commas", 
        function(from) as.numeric(gsub(",", "", from) ) )

然后运行read.csv,如下所示:

DF <- read.csv('your.file.here', 
   colClasses=c('num.with.commas','factor','character','numeric','num.with.commas'))

我想使用R而不是预处理数据,因为数据修改时它更容易。 按照Shane提出的使用gsub的建议,我认为这与我所能做的一样简洁:

x <- read.csv("file.csv",header=TRUE,colClasses="character")
col2cvt <- 15:41
x[,col2cvt] <- lapply(x[,col2cvt],function(x){as.numeric(gsub(",", "", x))})
链接地址: http://www.djcxy.com/p/60619.html

上一篇: How to read data when some numbers contain commas as thousand separator?

下一篇: Why isn't express