將數據快速讀入R—readr和readxl包

Hadley Wickham 和 RStudio團隊寫了一些新的R包,這些包對於每一個須要在R中讀入數據的人來講都是很是有用的。readr包提供了一些在R中讀入文本數據的函數。readxl包提供了一些在R中讀入Excel電子表格數據的函數。它們的讀取速度遠遠超過你目前正在用的一些函數。html

readr包提供了若干函數在R中讀取數據。咱們一般會用R中的read.table家族函數來完成咱們的數據讀入任務。這裏,readr包提供了許多替代函數。它們增長了額外的一些功能而且速度快不少。git

首先,read_table幾乎代替了read.table。下面經過讀取一個包含400萬行的數據來比較它們的區別。點擊這裏下載該數據。github

注:在演示以前簡單說下我電腦的配置:win7,64位操做系統,8G內存,CPU A6雙核。電腦配置不行,原文給出的實驗時間甩了我好幾條街。但無論怎樣,在現有的條件下效率確實提升了不少。原文用時見末尾連接。函數

這些命令看上去很是類似,可是read.table花的時間是50.62秒,而read_table完成相同的任務只花了2.76秒。這是由於read_table把數據當作是固定格式的文件,而且使用C++快速處理數據。操作系統

R中的基礎包utils也有讀取固定寬度數據的函數,下面的示例就能體現出readr的亮點:翻譯

readr包的read_fwf函數用時3.97秒,而標準的read.fwf函數耗時1372秒。code

readr包中的其它函數包括:read_csv讀取逗號分隔的數據(歐洲用的是read_csv2函數),read_tsv讀取製表符分隔數據,read_lines函數從文件中逐行讀取數據(很是適合複雜的後期處理)。它還能夠讀取多種格式的日期時間列,智能的將文本數據讀取爲字符串(再也不須要設置strings.as.factors=FALSE)。cdn

對於Excel格式的數據,這裏有readxl包。這個包提供的函數能夠讀取.xls和.xlsx格式的Excel工做表。雖然這裏沒有演示read_execl函數的使用,可是它跟readr中的函數同樣都是基於C++庫的,所以讀取速度應該也很快。最重要的是,它沒有任何的外部依賴,所以你能夠在任意平臺上用它來讀取數據—不要求安裝了Excel。htm

readr包已發佈在CRAN上,readxl能夠從github安裝。blog

本文由雪晴數據網負責翻譯整理,原文請參考New packages for reading data into R — fast做者David Smith。轉載請註明原文連接http://www.xueqing.cc/cms/article/102

相關文章
相關標籤/搜索