繁体   English   中英

最优雅的方式加载csv点与R中的千位分隔符

[英]Most elegant way to load csv with point as thousands separator in R

注意:据我所知,这个问题并不重复! 我找到的所有问题/答案要么是如何从已经在R中的数据中消除点,要么在加载时如何将小数点更改为逗号。

我有一个csv,数字如: 4.123,98 问题是因为. 使用read.tableread.csvread.csv2加载时,输出变为字符串矩阵。 改变dec ,没有帮助。

我的问题
加载此csv的最优雅方式是什么,以便数字变为例如4123.98作为数字?

改编自这篇文章: 在read.table / read.csv中为colClasses参数指定自定义日期格式

#some sample data
write.csv(data.frame(a=c("1.234,56","1.234,56"),
                     b=c("1.234,56","1.234,56")),
          "test.csv",row.names=FALSE,quote=TRUE)

#define your own numeric class
setClass('myNum')
#define conversion
setAs("character","myNum", function(from) as.numeric(gsub(",","\\.",gsub("\\.","",from))))

#read data with custom colClasses
read_data=read.csv("test.csv",stringsAsFactors=FALSE,colClasses=c("myNum","myNum"))
#let's try whether this is really a numeric
read_data[1,1]*2

#[1] 2469.12

我不是在加载时尝试修复它,而是将数据作为字符串加载到R中,然后将其处理为数字。

所以加载后,它是一列字符串,如“4.123,98”

然后做一些事情:

 number.string <- gsub("\\.", "", number.string)
 number.string <- gsub(",", "\\.", number.string)
 number <- as.numeric(number.string)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM