【发布时间】:2022-11-09 22:44:05
【问题描述】:
我有一个 csv 格式的 20GB 数据集,我正在尝试使用 read.csv.sql 命令对其进行修剪。
我可以使用以下命令成功加载前 10,000 个观察值:
testframe = read.csv(file.choose(),nrows = 10000)
列名如下图所示:
然后,我尝试使用以下命令构建精简的数据集,但出现错误:
reduced = read.csv.sql(file.choose(),
sql = 'select * from file where "country" = "Poland" OR
country = "Germany" OR country = "France" OR country = "Spain"',
header = TRUE,
eol = "\n")
错误是:Error in connection_import_file(conn@ptr, name, value, sep, eol, skip) : RS_sqlite_import: C:\Users\feded\Desktop\AWS\biodiversity-data\occurence.csv line 262 expected 37 columns of data but found 38
为什么我可以轻松加载前 10,000 个观察结果,而第二个命令会出现问题?我希望您拥有能够在此问题上提供一些帮助所需的所有信息。
【问题讨论】:
-
262行有什么奇怪的吗?您可以通过以下方式查询:
readLines(file.choose(), n = 262)[262] -
如果您安装了 AWK,您可以使用
data.table::fread()预处理数据以获取这些国家/地区的行,即library(data.table); df <- fread("awk -F, '$22 ~ \"country\" || $22 ~ \"Poland\" || $22 ~ \"Germany\" || $22 ~ \"France\" || $22 ~ \"Spain\"' file.csv")(假设国家/地区是第 22 列,如您发布的图片中所示) -
@jared_mamrot 我如何安装 AWK?我不知道它是什么,我搜索了包裹但没有找到。
-
AWK 是一种编程语言:gnu.org/software/gawk/manual/gawk.html。如果您使用的是 linux/macOS,它会预装在您的系统上。如果您使用的是 Windows,您可以按照以下说明安装它:gnu.org/software/gawk/manual/gawk.html#PC-Installation,但如果您还没有安装它,这可能不是一个好的解决方案。最简单的找出方法是尝试该命令并查看它是否有效
-
已将我的 cmets 移至答案。