2016-10-28 93 views
0

我有一個大文件(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://stackoverflow.com/search?q=%5Br%5D+filter+sqldf+where)獲取一些靈感。 – Jaap

+0

我沒有任何列名稱。因此我不知道如何使用sqldf來子集? – Fabi

+0

您是否考慮過僅命名csv文件中的列? csv的結構非常簡單,你可以使用Notepad ++ ... – JonGrub

回答

0

我覺得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 
)