【问题标题】:How to read CBOE csv file using data.table如何使用 data.table 读取 CBOE csv 文件
【发布时间】:2014-10-09 23:08:43
【问题描述】:

我正在尝试阅读http://www.cboe.com/publish/ScheduledTask/MktData/datahouse/pcratioarchive.csv(更多关于这里的数据http://www.cboe.com/data/PutCallRatio.aspx)使用

library(data.table)
download.file(url="http://www.cboe.com/publish/ScheduledTask/MktData/datahouse/pcratioarchive.csv", destfile="pcratioarchive.csv")
outDT <- fread("pcratioarchive.csv", header=FALSE, skip=4)

这会以某种方式检测到奇怪的错误(我在 pcratioarchive.csv 文件本身中看不到):

outDT

有没有办法在不手动更改 pcratioarchive.csv 的情况下使用 data.table 完成这项工作?

我的会话信息:

会话信息() R 版本 3.1.1 (2014-07-10) 平台:x86_64-pc-linux-gnu(64位)

locale:
 [1] LC_CTYPE=en_US.UTF-8          LC_NUMERIC=C                 
 [3] LC_TIME=en_US.UTF-8           LC_COLLATE=en_US.UTF-8       
 [5] LC_MONETARY=en_US.UTF-8       LC_MESSAGES=en_US.UTF-8      
 [7] LC_PAPER=en_US.UTF-8          LC_NAME=en_US.UTF-8          
 [9] LC_ADDRESS=en_US.UTF-8        LC_TELEPHONE=en_US.UTF-8     
[11] LC_MEASUREMENT=en_US.UTF-8    LC_IDENTIFICATION=en_US.UTF-8

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base     

other attached packages:
[1] data.table_1.9.3 rj_1.1.3-1      

loaded via a namespace (and not attached):
[1] plyr_1.8.1    Rcpp_0.11.1   reshape2_1.4  rj.gd_1.1.3-1 stringr_0.6.2
[6] tools_3.1.1  

【问题讨论】:

  • 查看此链接&lt;http://stackoverflow.com/questions/24340370/fread-error-and-strange-behaviour-when-reading-csv&gt;

标签: r data.table


【解决方案1】:

pcratioarchive.csv 文件格式错误。例如:

...
10/12/1995,0.63,,,
10/13/1995,0.76,,,
10/16/1995,0.87
10/17/1995,0.76
...
10/17/2003,0.64,,
10/20/2003,0.62,,
10/21/2003,0.7,1.27,0.59
10/22/2003,0.98,1.89,0.77
...

我对@9​​87654323@ 不够熟悉,不知道它是否有处理此问题的参数,但read.csv 有。

x <- read.csv("pcratioarchive.csv", header=FALSE, skip=4, fill=TRUE)

【讨论】:

  • fread 还没有fill,但它以FR #536 的形式存在。如果像 CBOE 这样明智的人正在编写这样的文件,那么它应该是更高的优先级。
  • @MattDowle:我们不要自欺欺人。大多数 CSV 文件可能是由 Excel 创建的,即使是最明智的机构也会显得愚蠢。除非您非常小心,否则 Excel 可以对您的 CSV 文件执行各种奇怪的操作。
  • 啊哈——好地方。事实上,相关链接的 CBOE 页面上的图表看起来与 Excel 非常相似。 Excel 2013 的行限制似乎是 1,048,576 行,所以我想 fread(,fill=T) 可以转移到 read.csv(,fill=T),因为 1e6 太小了。但是,也可以有 16,384 列。如果每个单元格写成 4 个字节,则完整的 Excel 工作表可能是 64GB。也许证明 fread 支持 fill=T 然后是合理的。
猜你喜欢
  • 1970-01-01
  • 2022-01-01
  • 1970-01-01
  • 2019-11-13
  • 1970-01-01
  • 2010-12-08
  • 2019-08-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多