如何在 R 中读取大型数据集 [重复]
Posted
技术标签:
【中文标题】如何在 R 中读取大型数据集 [重复]【英文标题】:How to read large dataset in R [duplicate] 【发布时间】:2011-04-27 10:53:00 【问题描述】:可能重复:Quickly reading very large tables as dataframes in R
嗨,
尝试在 R 中读取大型数据集时,控制台显示以下错误:
data<-read.csv("UserDailyStats.csv", sep=",", header=T, na.strings="-", stringsAsFactors=FALSE)
> data = data[complete.cases(data),]
> dataset<-data.frame(user_id=as.character(data[,1]),event_date= as.character(data[,2]),day_of_week=as.factor(data[,3]),distinct_events_a_count=as.numeric(as.character(data[,4])),total_events_a_count=as.numeric(as.character(data[,5])),events_a_duration=as.numeric(as.character(data[,6])),distinct_events_b_count=as.numeric(as.character(data[,7])),total_events_b=as.numeric(as.character(data[,8])),events_b_duration= as.numeric(as.character(data[,9])))
Error: cannot allocate vector of size 94.3 Mb
In addition: Warning messages:
1: In data.frame(user_msisdn = as.character(data[, 1]), calls_date = as.character(data[, :
NAs introduced by coercion
2: In data.frame(user_msisdn = as.character(data[, 1]), calls_date = as.character(data[, :
NAs introduced by coercion
3: In class(value) <- "data.frame" :
Reached total allocation of 3583Mb: see help(memory.size)
4: In class(value) <- "data.frame" :
Reached total allocation of 3583Mb: see help(memory.size)
有人知道如何读取大型数据集吗? UserDailyStats.csv 的大小约为 2GB。
【问题讨论】:
相关:***.com/questions/1875795/… 和 ***.com/questions/3340568/… 另见:yusung.blogspot.com/2007/09/… 和 ff.r-forge.r-project.org/bit&ff2.1-2_WU_Vienna2010.pdf 【参考方案1】:当然:
-
买一台更大的电脑,尤其是更多的内存
运行 64 位操作系统,请参阅 1) 关于更多内存,现在您可以使用它了
只读您需要的列
读取更少的行
以二进制形式读取数据,而不是重新解析 2gb(效率极低)。
在R 网站上还有一个manual for this。
【讨论】:
【参考方案2】:您可以尝试使用colClasses
在read.csv
调用中指定数据类型。
data<-read.csv("UserDailyStats.csv", sep=",", header=T, na.strings="-", stringsAsFactors=FALSE, colClasses=c("character","character","factor",rep("numeric",6)))
尽管使用这种大小的数据集,它可能仍然存在问题,并且没有大量内存可用于您可能想要进行的任何分析。添加 RAM 和使用 64 位计算将提供更大的灵活性。
【讨论】:
【参考方案3】:如果这是从控制台输出,那么您读取数据,但转换存在问题。
如果您以交互方式工作,则在 read.csv
之后使用 save(data, file="data.RData")
保存数据,关闭 R,运行新实例,使用 load("data.RData")
加载数据,然后查看是否失败。
但是从这个错误消息中,我看到你有转换问题,所以你应该看看。
【讨论】:
以上是关于如何在 R 中读取大型数据集 [重复]的主要内容,如果未能解决你的问题,请参考以下文章