我使用R来达到csv。但我不希望整个数据集在内存中,因为数据集太大。但我需要根据一列的类别来读取行。
我想只读取col2='A'的行。
例子: col1 col2 col3 1 A 1000 2 B 2000 3 A 1000 4 A 2000 5 A 1000 6 B 2000
我们可以使用 sqldf
library(sqldf)
df1 <- read.csv.sql("file.csv", "select *, from file where col2 = 'A'", sep=",")
你可以尝试使用 fread
从 data.table
包带 cmd
选项。从 文件:
一个预处理文件的shell命令,例如fread(cmd=paste("grep",word, "filename")。查看详情。
Shell命令。
fread接受shell命令以示方便。输入的命令会被运行,其输出会被写入tmpdir(默认为link{tempdir}())中的一个文件,fread会 "正常 "地应用这个文件。具体的细节取决于平台 -- 在 UNIX 环境下使用 system,否则使用 shell;参见 system。
因此,如果你运行这样的命令
library(data.table)
t <- fread(......., cmd=paste("grep","' A '","filename"), .....)
然后它过滤包含 A
(A周围有空格),然后应用 fread
到的结果。