我有一个大文件(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”
答案 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
)