【发布时间】:2018-11-26 05:31:07
【问题描述】:
我的本地驱动器上有许多大型数据文件 (.csv),需要在 R 中读取、过滤行/列,然后合并。每个文件大约有 33,000 行和 575 列。
我读了这篇文章:Quickly reading very large tables as dataframes 并决定使用“sqldf”。
这是我的代码的简短版本:
Housing <- file("file location on my disk")
Housing_filtered <- sqldf('SELECT Var1 FROM Housing', file.format = list(eol="/n")) *I am using Windows
我看到“Housing_filtered”数据框是用 Var1 创建的,但观察值为零。这是我第一次使用 sqldf。我不确定为什么会返回零观测值。
我还使用了“read.csv.sql”,但我仍然看到零观察结果。
Housing_filtered <- read.csv.sql(file = "file location on my disk",
sql = "select Var01 from file",
eol = "/n",
header = TRUE, sep = ",")
【问题讨论】:
-
欢迎来到 StackOverflow!我们实际上要求调试问题以获得可重现示例。没有您的数据,我们无法知道问题所在。但是,我敢打赌,您的文件所期望的格式存在问题。
class(Housing)是数据帧吗?如果是这样,dim(Housing)是什么?你能用read.csv()导入你的文件,以便我们知道我们得到了什么吗? -
请注意,换行符是
\n而不是/n。 -
@ G. Grothendieck:当我将
\n更改为/n时,出现以下错误:Error in connection_import_file(conn@ptr, name, value, sep, eol, skip) : RS_sqlite_import: file_location_and_name.csv line 2 expected 575 columns of data but found 747 -
@Hack-R:谢谢。由于我使用的是大型本地文件,因此我不确定如何使我的问题可重现。针对您的问题,
dim(Housing)在我运行第一个示例代码后返回NULL和class(Housing)返回[1] "file" "connection"。我可以用 read.csv() 打开我的文件,给我一个暗 33121 x 575 的 data.frame。 -
@Hessam 好的,所以文件从未导入