2016-09-18 7 views
2

Прошу прощения, что я не могу создать воспроизводимый пример (или, я думаю, по крайней мере, не по правилам), но все же надеюсь для помощи. Я использую данные здесь: American Housing Survey 2013 dataПрочтите огромный файл .csv с некоторыми столбцами в одинарных кавычках, но не все с fread из пакета data.table

Поскольку файлы данных достаточно большой, я хотел бы использовать команду «Fread» вместо команды «read.csv». С read.csv я мог бы просто сделать следующее:

homimp <- read.csv("homimp.csv", quotes = "'") 
head(homimp) 
     CONTROL RAS RAH RAD JRAS JRAD 
1 100003130103 74 2 96 -9 9 
2 100006110249 35 2 8358 -9 9 
3 100006110249 36 2 5970 -9 9 
4 100006110249 37 2 6567 -9 9 
5 100006110249 40 2 716 -9 9 
6 100006110249 45 2 1910 -9 9 

и было бы удалить кавычки (обратите внимание, что один столбец (РАД) не в кавычках, в первую очередь) Однако, если я читаю с FREAD I кажется, не быть в состоянии удалить кавычки цитата аргумент возвращает ошибку:

homimpdt <- fread("homimp.csv", quote = "'") 
Error in fread("homimp.csv", quote = "'") : unused argument (quote = "'") 

И без аргументов кавычки не удаляются:

homimpdt <- fread("homimp.csv") 
head(homimpdt) 
      CONTROL RAS RAH RAD JRAS JRAD 
1: '100003130103' '74' '2' 96 '-9' '9' 
2: '100006110249' '35' '2' 8358 '-9' '9' 
3: '100006110249' '36' '2' 5970 '-9' '9' 
4: '100006110249' '37' '2' 6567 '-9' '9' 
5: '100006110249' '40' '2' 716 '-9' '9' 
6: '100006110249' '45' '2' 1910 '-9' '9' 

Почему я хочу это сделать:

> system.time(newhouse <- read.csv('newhouse.csv', quote = "'")) 
    user system elapsed 
    24.86 0.68 25.77 
> system.time(newhousedt <- fread('newhouse.csv')) 
Read 84355 rows and 760 (of 760) columns from 0.273 GB file in 00:00:04 
    user system elapsed 
    3.33 0.07 3.41 

Большое спасибо за помощь!

Ad Psidom Комментарий:

homimpdt <- fread("homimp.csv", quote = "\'") 
Error in fread("homimp.csv", quote = "'") : unused argument (quote = "'") 
+0

Установить 'quote =" \ '"'. – Psidom

+0

@ Psidom: Спасибо за ваш ответ, но, к сожалению, он также возвращает ошибку. –

+2

Нет параметра 'quote' для' data.table :: fread() ', если вы не используете 1.9.7 из github, но этот файл имеет ~ 67K строк. Это не большой файл и на самом деле не гарантирует использование 'fread()' for "speed" – hrbrmstr

ответ

0

Резюме ответов в комментариях:

Решение # 1:. Благодаря @Psidom и @jangorecki

Установить data.table V 1,9 .7:

install.packages("data.table", type="source", repos="http://Rdatatable.github.io/data.table") 

Затем запустить:

homimpdt <- fread("homimp.csv", quote = "\'") 

EDIT: Текущая версия data.table на CRAN является 1.9.6

Решение # 2 (Linux только): благодаря @RichScriven

можно найти здесь: Preventing column-class inference in fread()

и as.is = TRUE в функции type.convert()