只读行满足特定条件的大文本文件
问题描述:
我有一个大文件(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 =
答
我觉得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
)
也许你可以使用'sqldf'包。请参阅[这些搜索结果](http://*.com/search?q=%5Br%5D+filter+sqldf+where)获取一些灵感。 – Jaap
我没有任何列名称。因此我不知道如何使用sqldf来子集? – Fabi
您是否考虑过仅命名csv文件中的列? csv的结构非常简单,你可以使用Notepad ++ ... – JonGrub