將資料快速讀入R—readr和readxl包
Hadley Wickham 和 RStudio團隊寫了一些新的R包,這些包對於每個需要在R中讀入資料的人來說都是非常有用的。readr包提供了一些在R中讀入文字資料的函式。readxl包提供了一些在R中讀入Excel電子表格資料的函式。它們的讀取速度遠遠超過你目前正在用的一些函式。
readr包提供了若干函式在R中讀取資料。我們通常會用R中的read.table家族函式來完成我們的資料讀入任務。這裡,readr包提供了許多替代函式。它們增加了額外的一些功能並且速度快很多。
首先,read_table幾乎代替了read.table。下面通過讀取一個包含400萬行的資料來比較它們的區別。點選這裡下載該資料。
注:在演示之前簡單說下我電腦的配置:win7,64位作業系統,8G記憶體,CPU A6雙核。電腦配置不行,原文給出的實驗時間甩了我好幾條街。但不管怎樣,在現有的條件下效率確實提高了很多。原文用時見末尾連結。 system.time(read_table("C:\Users\a\Desktop\biggerfile.txt", col_names=c("DAY","MONTH","YEAR","TEMP")))
system.time(read.table("C:\Users\a\Desktop\biggerfile.txt", col.names=c("DAY","MONTH","YEAR","TEMP"))) 這些命令看上去非常相似,但是read.table花的時間是50.62秒,而read_table完成相同的任務只花了2.76秒。這是因為read_table把資料當做是固定格式的檔案,並且使用C++快速處理資料。
R中的基礎包utils也有讀取固定寬度資料的函式,下面的示例就能體現出readr的亮點: system.time(read_fwf("C:\Users\a\Desktop\biggerfile.txt", fwf_widths(c(3,15,16,12), col_names=c("DAY","MONTH","YEAR","TEMP"))))
system.time(read.fwf("C:\Users\a\Desktop\biggerfile.txt", c(3,15,16,12), col.ames=c("DAY","MONTH","YEAR","TEMP"))) readr包的read_fwf函式用時3.97秒,而標準的read.fwf函式耗時1372秒。
readr包中的其它函式包括:read_csv讀取逗號分隔的資料(歐洲用的是read_csv2函式),read_tsv讀取製表符分隔資料,read_lines函式從檔案中逐行讀取資料(非常適合複雜的後期處理)。它還可以讀取多種格式的日期時間列,智慧的將文字資料讀取為字串(不再需要設定strings.as.factors=FALSE)。
對於Excel格式的資料,這裡有readxl包。這個包提供的函式可以讀取.xls和.xlsx格式的Excel工作表。雖然這裡沒有演示read_execl函式的使用,但是它跟readr中的函式一樣都是基於C++庫的,因此讀取速度應該也很快。最重要的是,它沒有任何的外部依賴,因此你可以在任意平臺上用它來讀取資料—不要求安裝了Excel。
readr包已釋出在CRAN上,readxl可以從github安裝。
本文由雪晴資料網負責翻譯整理,原文請參考New packages for reading data into R — fast作者David Smith。轉載請註明原文連結http://www.xueqing.cc/cms/article/102
相關文章
- 如何將kafka中的資料快速匯入Hadoop?KafkaHadoop
- R語言快速入門R語言
- Elasticsearch和向量資料庫的快速入門Elasticsearch資料庫
- 快速入門資料結構和演算法資料結構演算法
- 【R資料科學讀書筆記】R語言中的管道操作資料科學筆記R語言
- R語言入門與資料分析R語言
- R:SNP資料篩選.R
- 【模版】快速讀入/輸出
- C++的快速讀入C++
- 如何將 EXCEL 資料寫入資料庫Excel資料庫
- Python使用pymysql和xlrd2將Excel資料匯入MySQL資料庫PythonMySqlExcel資料庫
- 《R語言入門與資料分析》——向量索引R語言索引
- 【關係抽取-R-BERT】載入資料集
- [大資料之Spark]——快速入門大資料Spark
- 達夢dmfldr資料快速載入
- 如何用 4 行 R 語句,快速探索你的資料集?
- R 資料重塑
- Magic原始碼閱讀(三)——資料匯入和構建原始碼
- R中將迴圈產生的資料框合併
- 100萬資料,如何快速的匯入資料庫?資料庫
- 【R語言入門】R語言中的變數與基本資料型別R語言變數資料型別
- 《數讀亞洲美食》大資料包告大資料
- 如何將Excl內資料匯入資料庫?資料庫
- 基於R語言的raster包讀取遙感影像R語言AST
- R資料分析:資料清洗的思路和核心函式介紹函式
- 資料匯入終章:如何將HBase的資料匯入HDFS?
- 快速爬取登入網站資料網站
- Redis快取資料庫-快速入門Redis快取資料庫
- 【TVM 學習資料】TensorIR 快速入門
- Androidxml資料的讀取和寫入(sax,pull,dom,xstream,jsoup)AndroidXMLJS
- php讀取excel檔案資料的匯入和匯出PHPExcel
- r 資料探勘入門 最後一章 勘誤
- 資料的讀取和寫入,其中Reader便是其中之一
- 將資料庫中資料匯入至solr索引庫資料庫Solr索引
- 如何用R和API免費獲取Web資料?APIWeb
- 如何快速將資料用逗號隔開——巧用EXCELExcel
- 功能解讀|快速上手 OceanBase 資料遷移服務
- Redis資料型別, Redis主從哨兵和叢集(將資料匯入叢集) ubuntu使用Redis資料型別Ubuntu
- 抓包概念大比較:資料包、資料包、分組