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

时间:2016-10-28 10:32:47

标签: r bigdata

我有一个大文件(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到50'000之间时,我想绘制第3列的直方图。

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

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

如果我应该使用sqldf包,那么问题就是我可以说第二列的值应小于例如50'000?

How do i read only lines that fulfil a condition from a csv into R?的区别在于我没有任何列名。因此,我无法在他们的解决方案中做出他们的建议:

  

sql =“select * from file where Sepal.Length> 5”

1 个答案:

答案 0 :(得分:0)

我认为readr的最新版本支持这种事情。以下内容仅适用于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
)