与Stata相比,读取R中数据帧的最快方法是什么?

时间:2014-10-30 15:59:58

标签: r performance csv stata cpu-speed

我有57000行和5500列的数据集。它们都是数字和字符变量。我最初以.dta格式下载数据,Stata读取它的速度非常快。当我使用timer命令计时时,它需要.13个烤饼。

现在,我一直在使用R,从我读过,它应该更有效率。我将数据从Stata导出到csv,甚至按照我在堆栈交换中读到的建议,结果也不令人信服。

这是我遇到的最佳解决方案:

library(data.table)
system.time(fread("~/Data/GSS/GSS.csv", stringsAsFactors=FALSE, header=T, na.strings=paste0(".",letters), data.table=FALSE)

我明白了:

Read 57061 rows and 5548 (of 5548) columns from 1.053 GB file in 00:00:46
  user  system elapsed 
  52.000   1.492  53.470 

虽然我已经宣布了这些值,但我也会收到很多关于缺失值的警告。警告:

Bumped column XXXX to type character on data row XXXX, field contains '.n'. 

我认为这与R无法识别数字列中的这些缺失值

有关

有关如何改善这一点的任何建议?作为旁注,我尝试了sqldf,但它只是在我的电脑上无法工作,甚至将软件包升级到最新版本。

以下是我正在使用的数据: http://www3.norc.org/GSS+Website/Download/

1 个答案:

答案 0 :(得分:0)

我发现read.dta13包中的readstata13是阅读Stata文件的最佳选择。

read.dta13的主要优点是能够将Stata标记的数据正确读入因子格式并保持顺序,我觉得这非常重要。它还可以读取任何版本的Stata,包括Stata 15文件。

我无法使用havenforeign软件包执行此操作。