2014-10-17 51 views
0

是否可以将来自多个文件的数据立即加载到ff数据框(ffdf)中? 可以说我有将多个CSV文件中的数据读入单个ffdf对象

big_file_part1.csv 
big_file_part2.csv 
big_file_part3.csv 

我知道我可以每个CSV文件加载到一个单独的ffdf对象,然后ffdfrbind.fill在一起。 但是,这似乎是一个低效率的方式,加载东西两次。有更直接的方法吗?

+0

你的文件有多大? – 2014-10-17 18:57:25

+0

实际上有27个文件,每个州有一个文件。总共10GB,但大多数状态都很小(<100MB),两种状态都较大(> 4GB>我的RAM) – LucasMation 2014-10-17 19:00:36

+2

您可以使用read.csv.ffdf中的参数'x'将数据附加到现有的ffdf。如果不同的csv文件具有相同的结构当然。 – jwijffels 2014-10-20 07:23:44

回答

2

这是我做的(注意我的源数据没有任何标题)。

第一步 - 确保您的所有文件都在同一个文件夹中。将您的工作目录设置为该文件夹。

#load the ffbase library 
library(ffbase) 

#create a vector of the files that I want to load 
temp = list.files(pattern="*.csv") 

#create the first ffdf object for i = 1, this is necessary to establish the ff dataframe to append the rest 
for (i in 1) 
    mydata <- read.csv.ffdf(file=temp[i], header=FALSE, VERBOSE=TRUE 
      , first.rows=100000, next.rows=100000, colClasses=NA) 

#loop through the remaining objects 
for (i in 2:length(temp)) 
    mydata <- read.csv.ffdf(x = mydata, file=temp[i], header=FALSE, VERBOSE=TRUE 
      , first.rows=100000, next.rows=100000) 
相关问题