2014-09-19 84 views
10

我有一個包含約200萬行的數據集,所以如果不讀取整個數據集,我想讀取數據集的一個子集。我的數據集包含一個日期列,所以我只想讀取日期範圍之間的數據集而不讀取整個數據集,因爲這樣會浪費時間和浪費內存。所以如何完成它任何人都可以指導我呢?如何讀取R中大數據集的子集?

+1

從package data.table中用'fread'讀取整個數據集或使用package sqldf。另請參閱:http://stackoverflow.com/q/1727772/1412059 – Roland 2014-09-19 11:21:08

回答

7

使用skip=read.table

read.table("file.txt",skip= ,nrows=) 

參數無論是skip=nrows=取行指示數字使剛剛=後添加。

nrows=定義您在導入文件時的範圍有多深。

如果您還沒有這樣做,我建議您閱讀https://stat.ethz.ch/R-manual/R-devel/library/utils/html/read.table.html

另外,請參閱我的問題之一:

R - Reading lines from a .txt-file after a specific line

它,有點,接觸到同一主題。

其他可能的辦法可能是使用grep()skip=

read.table(...,skip=grep("2005-12-31", readLines("File.txt")),nrows=365) 

什麼這行代碼就跳過,直到找到在grep()描繪的線和讀取後的行。 nrow=將讀取365行後停止閱讀(這種方式你已閱讀一年的日期提供一行等於一個日期)。

這似乎有點複雜,但它是我知道如何解決這個問題的唯一方法。

+0

但它如何在日期中工作? – 2014-09-19 11:25:17

+0

如果我不知道在文件中的開始日期我怎麼能計算要跳過的行數? – 2014-09-19 11:26:43

+0

你能指定一點嗎?你在閱讀什麼樣的文件?閱讀開始日期的選擇標準是什麼?我的意思是,你必須知道你想要導入的日期。或者我在這裏錯過了一些東西。 – 2014-09-19 11:31:44