如何读取R中的大型数据集

时间:2010-10-19 12:01:48

标签: r large-data

  

可能重复:
  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。

3 个答案:

答案 0 :(得分:13)

不确定

  1. 获得更大的计算机,特别是更多的ram
  2. 运行64位操作系统,请参阅1)关于更多ram,现在您可以使用它
  3. 只读您需要的列
  4. 阅读较少的行
  5. 以二进制方式读取数据,而不是重新解析2gb(效率很低)。
  6. manual for this网站上还有一个R

答案 1 :(得分:1)

您可以尝试使用read.csvcolClasses来电中指定数据类型。

data<-read.csv("UserDailyStats.csv", sep=",", header=T, na.strings="-", stringsAsFactors=FALSE, colClasses=c("character","character","factor",rep("numeric",6)))

虽然使用这样大小的数据集可能仍然存在问题,并且您可能想要进行的任何分析都没有大量内存。添加RAM&amp;使用64位计算可以提供更大的灵活性。

答案 2 :(得分:1)

如果这是从控制台输出然后你读取数据,但转换有问题。

如果您以交互方式工作,则在read.csv使用save(data, file="data.RData")保存数据后,关闭R,运行新实例,使用load("data.RData")加载数据,然后查看是否失败。

但是从这个错误消息中我发现你有转换问题所以你应该看一下。