2014-10-17 47 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) 
相關問題