2016-08-08 3 views
2

У меня есть файл Stata размером 10 ГБ, и я пытаюсь прочитать его в 64-битном R 3.3.1. Я работаю на виртуальной машине с около 130 ГБ ОЗУ (4 ТБ HD), а .dta-файл - около 3 миллионов строк и где-то между 400 и 800 переменными.R: Как быстро прочитать большие .dt-файлы без ОЗУ. Ограничения

Я знаю, что data.table() является самым быстрым способом чтения в .txt и .csv-файлах, но есть ли у кого-нибудь рекомендации по чтению больших файлов .dta в R? Чтение файла в Stata как .dta-файл требует около 20-30 секунд, хотя мне нужно установить максимальную рабочую память до открытия файла (я установил max на 100 ГБ).

Я не пробовал импортировать в .csv в Stata, но я надеюсь не касаться файла Stata. Решение найдено через Using memisc to import stata .dta file into R, но это предполагает, что ОЗУ недостаточно. В моем случае у меня должно быть достаточно оперативной памяти для работы с файлом.

+1

Если вы знакомы с питоном, можно преобразовать ваш dta-файл в файл csv. Ссылка SO [Преобразование Stata .dta-файла в CSV без программного обеспечения Stata] (http://stackoverflow.com/questions/2536047/convert-stata-dta-file-to-csv-without-stata-software) описывает это в одном ответов (а не верхний ответ). – steveb

+0

Если у вас достаточно бара, 'foreign :: read.dta()' должен работать, но он не работает в последнем формате stata. – shayaa

+0

Возможно, мне следовало бы лучше сформулировать: цель состоит в том, чтобы использовать R и делать это БЫСТРО. Read.dta невероятно медленный, и я надеюсь избежать преобразования файла в .csv. – QuestionAnswer

ответ

1

Самый быстрый способ загрузить большой набор данных Stata в R использует пакет readstata13. Я сравнил производительность foreign, readstata13 и haven пакеты на большом наборе данных in this post и результаты неоднократно показали, что readstata13 самый быстрый доступный пакет для чтения Stata набора данных в R.

2

Я рекомендую haven R package. В отличии от foreign, он может прочитать последние форматы Stata:

library(haven) 
data <- read_dta('myfile.dta') 

Не знаю, как быстро она по сравнению с другими вариантами, но ваш выбор для чтения файлов в Stata R весьма ограничен. Я понимаю, что haven обертывает библиотеку C, поэтому, вероятно, это ваш самый быстрый вариант.