阅读巨大的.csv文件与单引号中的一些列,但不是所有与freed从data.table包
问题描述:
我很抱歉,我不能真正创造一个可重复的例子(或者我猜,至少不是根据规则),但仍希望求助。 我使用的数据在这里: American Housing Survey 2013 data阅读巨大的.csv文件与单引号中的一些列,但不是所有与freed从data.table包
由于数据文件是相当大的,我想用而不是“read.csv”命令“FREAD”命令。随着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
,它会删除引号(注意,一列(RAD)是不是摆在首位报价) 但是,如果我用fread读我似乎不能够删除引号 的报价参数返回一个错误:
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
非常感谢您的帮助!
广告Psidom的评论:
homimpdt <- fread("homimp.csv", quote = "\'")
Error in fread("homimp.csv", quote = "'") : unused argument (quote = "'")
答
在注释中给出的答案摘要:
解决方案#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 = "\'")
编辑:于CRAN data.table当前版本1.9.6是
解决方案2(仅限Linux): 感谢@RichScriven
可以在这里找到: Preventing column-class inference in fread()
and set as.is = TRUE
in type.convert()
function
设置'quote =“\'”'。 – Psidom
@ Psidom:谢谢你的回答,但不幸的是它也会返回一个错误。 –
除非从github使用1.9.7,否则'data.table :: fread()'没有'quote'参数,但是这个文件是~67K行。这不是一个大文件,真的不保证使用'fread()'作为“速度” – hrbrmstr