Чтение данных из нескольких файлов CSV в один объект ffdf

Можно ли загрузить данные сразу из нескольких файлов в ff фрейм данных (ffdf)? Допустим, у меня есть

big_file_part1.csv
big_file_part2.csv
big_file_part3.csv

Я знаю, что могу загрузить каждый файл csv в отдельный объект ffdf, а затем ffdfrbind.fill их вместе. Но это кажется неэффективным способом — загружать материал дважды. Есть ли более прямой путь?


person LucasMation    schedule 17.10.2014    source источник
comment
Насколько велики ваши файлы?   -  person Miha Trošt    schedule 17.10.2014
comment
На самом деле существует 27 файлов, по одному для каждого состояния. Всего 10 ГБ, но большинство состояний маленькие (‹100 МБ), а 2 состояния довольно большие (>4 ГБ›моя оперативная память)   -  person LucasMation    schedule 17.10.2014
comment
Вы можете использовать аргумент «x» из read.csv.ffdf, чтобы добавить свои данные к существующему ffdf. Если, конечно, разные CSV-файлы имеют одинаковую структуру.   -  person    schedule 20.10.2014


Ответы (1)


Вот как я это сделал (обратите внимание, что мои исходные данные не имеют заголовков).

Первый шаг — убедитесь, что все ваши файлы находятся в одной папке. Установите свой рабочий каталог в папку.

#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)
person Winnie Kuo    schedule 21.05.2015