
作者:Jared P. Lander
來源:大數據DT(ID:hzdashuju)
編自:《R語言:實用數據分析和可視化技術》(原書第2版)
讀取CSV文件最好的方法是使用read.table函數,許多人喜歡使用read.csv函數,該函數其實是封裝的read.table函數,同時設置read.table函數的sep參數為逗號(",")。read.table函數返回的結果為data.frame。
read.table函數的第一個參數為文件所在路徑,可以是本地文件,也可以是網頁上的文件。本書主要是從網頁讀取文件。
任意CSV文件都可以讀取,這里使用read.table函數讀取一個簡單的文件(地址如下):
http://www.jaredlander.com/data/TomatoFirst.csv
> theUrl <-"http://www.jaredlander.com/data/TomatoFirst.csv" > tomato <-read.table(file=theUrl, header=TRUE, sep=",")
利用head命令,我們可以看到下面的結果。
> head(tomato)
如前面所述,第一個參數是文件名(或字符型變量)。注意我們如何顯式地使用參數名file、head和sep。函數的參數能夠按位置順序賦值,而不用顯式指定參數名,但指定參數名是最佳實踐。
第二個參數header,表示數據的第一行,即列名。第三個參數sed,表示數據的分隔符??梢栽O為“\t”(tab分隔符)或者“;”(分號分隔符),以讀取不同類型的文件。
常用但不被熟知的參數是stringAsFactors。將該參數設為FALSE(默認是TRUE)可使字符所在列不被轉換成factor列。這樣既節省計算時間(當大數據集包含許多字符列,也意味著有許多唯一值),又能保留列為字符。
stringAsFactors參數也可以用在data.frame中。再次創建“Sport”列。
> x <- 10:1 > y <- -4:5 > q <- c("Hockey", "Football", "Baseball", "Curling", "Rugby", + "Lacrosse", "Basketball", "Tennis", "Cricket", "Soccer") > theDF <-data.frame(First=x, Second=y, Sport=q, stringsAsFac=FALSE) > theDF$Sport
read.table函數還有許多參數,最常用的是quote和colClasses參數,分別設置字符的包圍符和每列的數據類型。
類似read.csv函數,也有其他用于read.table的封裝函數,也有默認參數。它們主要的區別是sep和dec參數。詳細情況見表6-1。
▲表6-1 讀取大文本文件的函數及其默認參數
大文件使用read.table函數讀取到內存比較慢,幸運的是有解決方案。讀取大CSV文件和其他文本文件的兩個主流的函數是read_delim和fread,前者在readr包中由Hadley Wickham實現,后者在data.table包中由Matt Dowle實現。read_delim和fread運行相當快,因為兩者都不把字符數據自動轉換成factor。
01、 read_delim函數
readr包提供讀取文本文件的一系列函數。最常用的是read_delim函數,讀取有分隔符的文件,比如CSV文件。該函數的第一個參數是讀取的文件路徑或者URL。col_names默認為TRUE,指定文件的第一行為列名。
> library(readr) > theUrl <- "http://www.jaredlander.com/data/TomatoFirst.csv" > tomato2 <- read_delim(file=theUrl, delim=',') Parsed with column specification: cols( Round = col_integer(), Tomato = col_character(), Price = col_double(), Source = col_character(), Sweet = col_double(), Acid = col_double(), Color = col_double(), Texture = col_double(), Overall = col_double(), `Avg of Totals` = col_double(), `Total of Avg` = col_double() )
read_delim函數執行后會打印列名和數據類型信息,這些信息也可以使用head.read_delim函數獲得。
readr包中的所有數據提取函數返回的是tibble,該數據類型是data.frame的擴展。最明顯的變化是打印的元數據,比如行列數和每列的數據類型。tibble會適應屏幕大小打印相應條數的行列數據。
> tomato2
read_delim函數不僅僅讀取速度比read.table函數快,而且不需要設置stringAsFactors參數為FALSE。read_csv、read_csv2和read_tsv函數是read.table函數分隔符分別為逗號(,)、分號(;)和tab(\t)的特殊情況。
注意,數據讀取為tbl_df對象,它是tbl的擴展,也是data.frame的擴展。tbl是data.frame的特殊類型,它在dplyr包中定義。每列的數據類型顯示在列名的下面,這是個很好的功能。
readr包有一些對read_delim函數封裝(預置分隔符)的輔助函數,比如read_csv函數和read_tsv函數。
02 、fread函數
另一個讀取大量數據的函數是data.table包的fread函數。第一個參數是讀取的文件路徑或者URL。header參數表示文件的第一行是列名,sep指定分隔符。該函數的stringAsFactors參數默認設為FALSE。
> library(data.table) > theUrl <- "http://www.jaredlander.com/data/TomatoFirst.csv" > tomato3 <- fread(input=theUrl, sep=',', header=TRUE)
這里也可以使用head函數查看前幾行數據:
> head(tomato3)
該函數讀取速度比read.table函數快,結果為data.table對象。data.table對象是data.frame的擴展,其是data.frame的優化。
read_delim或者fread函數讀取文件都非???,具體使用哪個函數取決于dplyr或者data.table包中哪個更適合數據處理。
關于作者:賈里德 P. 蘭德(Jared P. Lander),資深數據專家,Lander Analytics公司創始人兼CEO,紐約開放統計編程聚會負責人,哥倫比亞大學統計學兼職教授。在數據管理、多層次模型、機器學習、廣義線性模型、可視化、數據管理和統計計算等多個領域擁有豐富經驗。
數據分析咨詢請掃描二維碼
若不方便掃碼,搜微信號:CDAshujufenxi
CDA數據分析師證書考試體系(更新于2025年05月22日)
2025-05-26解碼數據基因:從數字敏感度到邏輯思維 每當看到超市貨架上商品的排列變化,你是否會聯想到背后的銷售數據波動?三年前在零售行 ...
2025-05-23在本文中,我們將探討 AI 為何能夠加速數據分析、如何在每個步驟中實現數據分析自動化以及使用哪些工具。 數據分析中的AI是什么 ...
2025-05-20當數據遇見人生:我的第一個分析項目 記得三年前接手第一個數據分析項目時,我面對Excel里密密麻麻的銷售數據手足無措。那些跳動 ...
2025-05-20在數字化運營的時代,企業每天都在產生海量數據:用戶點擊行為、商品銷售記錄、廣告投放反饋…… 這些數據就像散落的拼圖,而相 ...
2025-05-19在當今數字化營銷時代,小紅書作為國內領先的社交電商平臺,其銷售數據蘊含著巨大的商業價值。通過對小紅書銷售數據的深入分析, ...
2025-05-16Excel作為最常用的數據分析工具,有沒有什么工具可以幫助我們快速地使用excel表格,只要輕松幾步甚至輸入幾項指令就能搞定呢? ...
2025-05-15數據,如同無形的燃料,驅動著現代社會的運轉。從全球互聯網用戶每天產生的2.5億TB數據,到制造業的傳感器、金融交易 ...
2025-05-15大數據是什么_數據分析師培訓 其實,現在的大數據指的并不僅僅是海量數據,更準確而言是對大數據分析的方法。傳統的數 ...
2025-05-14CDA持證人簡介: 萬木,CDA L1持證人,某電商中廠BI工程師 ,5年數據經驗1年BI內訓師,高級數據分析師,擁有豐富的行業經驗。 ...
2025-05-13CDA持證人簡介: 王明月 ,CDA 數據分析師二級持證人,2年數據產品工作經驗,管理學博士在讀。 學習入口:https://edu.cda.cn/g ...
2025-05-12CDA持證人簡介: 楊貞璽 ,CDA一級持證人,鄭州大學情報學碩士研究生,某上市公司數據分析師。 學習入口:https://edu.cda.cn/g ...
2025-05-09CDA持證人簡介 程靖 CDA會員大咖,暢銷書《小白學產品》作者,13年頂級互聯網公司產品經理相關經驗,曾在百度、美團、阿里等 ...
2025-05-07相信很多做數據分析的小伙伴,都接到過一些高階的數據分析需求,實現的過程需要用到一些數據獲取,數據清洗轉換,建模方法等,這 ...
2025-05-06以下的文章內容來源于劉靜老師的專欄,如果您想閱讀專欄《10大業務分析模型突破業務瓶頸》,點擊下方鏈接 https://edu.cda.cn/g ...
2025-04-30CDA持證人簡介: 邱立峰 CDA 數據分析師二級持證人,數字化轉型專家,數據治理專家,高級數據分析師,擁有豐富的行業經驗。 ...
2025-04-29CDA持證人簡介: 程靖 CDA會員大咖,暢銷書《小白學產品》作者,13年頂級互聯網公司產品經理相關經驗,曾在百度,美團,阿里等 ...
2025-04-28CDA持證人簡介: 居瑜 ,CDA一級持證人國企財務經理,13年財務管理運營經驗,在數據分析就業和實踐經驗方面有著豐富的積累和經 ...
2025-04-27數據分析在當今信息時代發揮著重要作用。單因素方差分析(One-Way ANOVA)是一種關鍵的統計方法,用于比較三個或更多獨立樣本組 ...
2025-04-25CDA持證人簡介: 居瑜 ,CDA一級持證人國企財務經理,13年財務管理運營經驗,在數據分析就業和實踐經驗方面有著豐富的積累和經 ...
2025-04-25