Это вариант для чтения данных быстрее в R с помощью функции fread
в data.table
пакете.
EDIT
Я удалил все <br/>
теги новой строки. Это отредактированный набор данных
ST|ZIPCODE|GEO_ID|GEO_TTL|FOOTID_GEO|NAICS2012|NAICS2012_TTL|FOOTID_NAICS|YEAR|EMPSZES|EMPSZES_TTL|ESTAB|ESTAB_F
01|35004|8610000US35004|35004(MOODY,AL)||00|Total for all sectors||2012|001|All establishments|167|
01|35004|8610000US35004|35004(MOODY,AL)||00|Total for all sectors||2012|212|Establishments with 1 to 4 employees|91|
Затем я сопоставлял переменные с классами. Вы должны использовать nrows
~ 100.
colclasses = sapply(read.table(edited_data, nrows=1, sep="|", header=T),class)
Затем я прочитал отредактированные данные.
your_data <- fread(edited_data, sep="|", sep2=NULL, nrows=-1L, header=T, na.strings="NA",
stringsAsFactors=FALSE, verbose=FALSE, autostart=30L, skip=-1L, select=NULL,
colClasses=colclasses)
Все работает как шарм. В случае, если у вас есть проблемы с удалением тегов, используйте этот простой скрипт на Python (это займет некоторое время, наверняка):
original_file = file_path_to_original_file # e.g. "/Users/User/file.dat"
edited_file = file_path_to_new_file # e.g. "/Users/User/file_edited.dat"
with open(original_file) as inp:
with open(edited_file, "w") as op:
for line in inp:
op.write(line.replace("<br/>", "")
P.S.
Вы можете использовать read.table
с аналогичной оптимизацией, но это не даст вам почти такую же скорость.
Что находится в файле '.dat'? Можете ли вы дать пару строк, чтобы мы знали структуру. Вы можете значительно увеличить скорость чтения R, если вы укажете структуру. –
Разделение всех элементов в сегментах не решит ничего, да и останется 4 ГБ. Независимо от того, как вы крутите или изгибаете его. Извините, что не отвечал или не помогал, но просто хотел указать на это – Syntasu
@EliKorvigo Я добавил фрагмент файла. – peech