将大型数据集加载到数据框中

时间:2014-02-09 15:06:28

标签: r data-import

我有一个存储在文本文件中的数据集,它有997列,45000行。除行名和列名外,所有值都是double值。我使用带有read.table命令的R studio来读取数据文件,但似乎需要花费数小时才能完成。然后我中止了它。

即使我用Excel打开它,也需要2分钟。

R Studio似乎缺乏这项任务的效率,任何建议如何让它更快?我不想一直读取数据文件?

我计划加载一次并将其存储在Rdata对象中,这可以使加载数据在未来更快。但第一次加载似乎不起作用。

我不是计算机专业毕业生,任何帮助都会得到很好的赞赏。

2 个答案:

答案 0 :(得分:0)

我建议使用data.table,尽管在此之后你会得到一个数据表。如果您选择不使用数据表,则只需转换回正常的数据框即可。

require(data.table)
data=fread('yourpathhere/yourfile')

答案 1 :(得分:0)

?read.table帮助文件中所述,有三个参数可以显着加快和/或减少导入数据所需的内存。首先,通过告诉read.table每列包含哪种数据,可以避免与read.table相关的开销,试图猜测每列中的数据类型。其次,通过告诉read.table数据文件有多少行可以避免分配比实际需要更多的内存。最后,如果文件不包含注释,则可以通过告知R不要查找注释来减少导入数据所需的资源。使用所有这些技术,我能够在相对适中的硬件的笔记本电脑上在两分钟内读取一个包含997列和45000行的.csv文件:

tmp <- data.frame(matrix(rnorm(997*45000), ncol = 997))
write.csv(tmp, "tmp.csv", row.names = FALSE)

system.time(x <- read.csv("tmp.csv", colClasses="numeric", comment.char = ""))
#   user  system elapsed 
#115.253   2.574 118.471

我尝试使用默认的read.csv参数读取文件,但在30分钟后放弃了。