如何通过基于R中的条件过滤行来读取文件

时间:2020-05-24 18:30:56

标签: r read.csv

我正在使用R到达csv。但是我不希望整个数据集在内存中,因为数据集太大。但是我需要根据一列的类别读取行。

我只想读取col2 ='A'的行

示例: col1 col2 col 3
1 A 1000
2 B 2000
3 A 1000
4 A 2000
5 A 1000
6 B 2000

2 个答案:

答案 0 :(得分:1)

我们可以使用sqldf

library(sqldf)
df1 <- read.csv.sql("file.csv", "select *, from file where col2 = 'A'", sep=",")

答案 1 :(得分:1)

您可以尝试将fread软件包中的data.tablecmd选项一起使用。来自documentation

用于预处理文件的shell命令;例如fread(cmd = paste(“ grep”,word,“ filename”)。请参阅详细信息。

Shell命令:

为了方便起见,

fread接受shell命令。运行输入命令,并将其输出写入tmpdir中的文件(默认情况下为link {tempdir}()),“正常”将fread应用于该文件。详细信息取决于平台-系统在UNIX环境中使用,否则在shell上使用;参见系统。

因此,如果您运行

library(data.table)
t <- fread(......., cmd=paste("grep","' A '","filename"), .....)

然后,它过滤包含A(用空格包围的A)的行,然后将fread应用于结果。