只读行满足特定条件的大文本文件

问题描述:

我有一个大文件(data.txt,35 GB),它有3列。 文件的一些示例部分将如下所示:只读行满足特定条件的大文本文件

... ... ... 
5 701565 8679.56 
8 1.16201e+006 3193.18 
1 1.16173e+006 4457.85 
14 1.16173e+006 4457.85 
9 1.77942e+006 7208.73 
4 1.78011e+006 8239.88 
14 1.78019e+006 8195.57 
9 2.00206e+006 8858.55 
4 2.00199e+006 7924 
... ... ... 

我想绘制直方图第三列时在第二列中的值是0和50000之间。

然后我想要做另一个直方图,其中第一列的值在50'000和100'000之间。等等等等。

我不知道如何加载/只读取我一次需要的数据。任何帮助,将不胜感激!

如果我应该使用sqldf软件包,那么我的问题就是我怎么能说第二列的值应该小于例如50000?

How do i read only lines that fulfil a condition from a csv into R?的区别在于我没有任何列名。因此,我不能这样做,他们提出在他们的解决方案是什么:

SQL =

+0

也许你可以使用'sqldf'包。请参阅[这些搜索结果](http://*.com/search?q=%5Br%5D+filter+sqldf+where)获取一些灵感。 – Jaap

+0

我没有任何列名称。因此我不知道如何使用sqldf来子集? – Fabi

+0

您是否考虑过仅命名csv文件中的列? csv的结构非常简单,你可以使用Notepad ++ ... – JonGrub

我觉得readr支持这样的事情最近版本的“从文件,其中Sepal.Length> 5 SELECT *”。以下仅适用于帮助readr::read_csv_chunked

library(readr) 

f <- function(x, pos) subset(x, X3 > 0 & X3 < 50000) 
df <- read_csv_chunked(
    'test.csv', 
    DataFrameCallback$new(f), 
    chunk_size = 100000, 
    col_names = F 
)