【发布时间】:2015-10-06 13:05:07
【问题描述】:
我尝试读取的 csv 文件具有以下格式:
Date,x,y
"2015/08/01","71,131","20,390"
"2015/08/02","81,599","23,273"
"2015/08/03","79,435","21,654"
"2015/08/04","80,733","20,924"
分隔符是逗号,但每个值也用引号括起来,因为逗号用作千位分隔符。我尝试了来自 {readr} 的 read.csv 、 read_csv 和来自 {data.table} 的 fread ,我能做的最好的事情就是读取所有值作为字符串,然后使用 as.numeric 和 gsub 的组合来将它们转化为数字。
我还发现了这个:Most elegant way to load csv with point as thousands separator in R 它非常有用,但是我的数据有很多列(并非都是数字),我宁愿不指定列类型。
有什么想法或者我应该开始 gsub-ing 吗?有趣的是,Excel 可以很好地读取文件:)
【问题讨论】:
-
你知道哪些列需要转换吗?
-
@Jaap 我猜,但至少它会正确读取它。啊刚刚看到他们已经尝试过了。非虚拟机
-
大卫 - 我不确定那会完成什么。无论如何,我收到此错误:` Expected sep (' ') but new line, EOF (or other non printing character) 在检测类型时结束字段 4 (first): Enter the new date: (mm-dd-yy) `
-
因为您需要以正确的格式阅读它,所以我无法在 cmets 中对其进行格式化。买我猜你已经尝试过了。
-
@Jaap - 现在我知道(大约 40 列)。不过以后会加栏目,不想每次都手动修改。