統計R語言實作筆記系列 – R簡介與資料輸入教學

R 的實作筆記是去年在 Soumya 的「應用商業分析」就想過要整理了,不過一直抽不出時間,新學期上 Rich 的「行動雲端服務系統設計」,其中一項作業正好也跟 R 有關,趁這個機會複習複習。

現在 R 普及流行的程度比起四、五年前第一次聽說的時候又提升了不少, Big Data 、數據繪圖及學術社群討論得尤其熱烈,甚至還看到新創公司的資料分析職缺直接要求能操作 R 。

R 程式可以直接到 R-project 網站下載。

大名鼎鼎的 R ,是兩位姓氏為 R 開頭的學者基於統計的需求開發的開源軟體,光是免費這一點就使它受到廣大的注意,近年在許多熱心使用者的開發補足下,現在 R 已經具備相當豐富的程式庫,而且實用性與運行速度都不亞於市面上昂貴的套裝軟體,對進階的程式使用者來說, R 與其他語言的高相容性也是一大賣點。

R 的介面不像 SPSS 之類的 GUI 產品,而是靠輸入簡單的程式碼來操作(如 SAS ),雖然聽起來嚇人,不過實際上並沒有想像中困難,因為分析功能大多已經有現成的套件( packages )可供使用。軟體主程式可以下載簡易的 R GUI 或者具備開發環境的 R Studio ,僅就統計而言兩者差不多,就看各位的使用需求了。

作為一套統計工具,首先的問題是怎麼把資料輸入到 R 中。這篇文章就先介紹幾種初學者必學的函數吧。

R 讀取資料的常用函數

1.read.table()
2.read.fwf()
3.read.xlsx()
4.read.delim()
5.read.csv()
6.scan()
7.file.choose()

R 讀取資料的常用函數: read.table

首先是 R 的內建函數「 read.table 」,在 R 中的所有功能都可以透過輸入名稱來查詢它的基本語法,例如以下的例子:

read.table

function (file, header = FALSE, sep = “", quote = “"‘", dec = “.", row.names, col.names, as.is = !stringsAsFactors, na.strings = “NA",    colClasses = NA, nrows = -1, skip = 0, check.names = TRUE,    fill = !blank.lines.skip, strip.white = FALSE, lank.lines.skip = TRUE,    comment.char = “#", allowEscapes = FALSE, flush = FALSE,    stringsAsFactors = default.stringsAsFactors(), fileEncoding = “",    encoding = “unknown", text)

開發者寫進 R 的語法雖然很長,不過通常只會改變其中幾種參數,使用上其實非常簡易,而且只要在 R 畫面中輸入函數名稱,就可以看見完整的語法,因此之後的各種函數就不再一一列出每個功能的全部參數欄位,有興趣的同好可以參考 R 網站提供的手冊。

讀取資料的第一課:read.table

使用「 read.table 」函數,必須先確定資料的位置,輸入完整的路徑或者改變現在的工作資料夾到存放檔案的資料夾。

以 R GUI 為例,改變資料夾可以從「檔案變更現行目錄」來指定。

r-gui-教學

假如 R 的工作資料夾就是放檔案的資料夾,檔案格式為 txt ,那麼就可以用以下程式讀取資料。

# 其中header=T或F取決於是否要顯示欄位名稱

data<-read.table(file="testOfPerf-0.txt", header=T)

data

r-read.table-範例

固定欄位寬度的載入方式:read.fwf

如果不喜歡資料呈現很雜亂,也可以改用 read.fwf 函數,設定好每個欄位的寬度(利用 widths )來改善呈現方式,這在某些由機器產生資料或者原始數據集需要大量壓縮的場合會成為超強的應用:

data<-read.fwf(file="testOfPerf-0.csv", widths=c(10,10,10,10,10))

data

r-read.fwf-範例

利用 xlsx 套件與 read.xlsx 功能讀取試算表

read.table 」通常用來讀取 csv、txt 檔案,如果想要一勞永逸地讀取歷年各版本的 excel 檔案,可以用「 library 」函數下載「 xlsx 」套件,R會自動安裝運行「 xlsx 」函數所需的其他套件,如「 rJava 」等等。

library(xlsx)
Loading required package: xlsxjars
Loading required package: rJava

安裝完成之後,就可以使用「 read.xlsx 」來讀取檔案了,以名稱為「 testOfPerf-0 」的檔案為例,讀取其中的第 2 張試算表。

# sheetIndex=數字用來指定第幾張工作表,也可以使用 sheetName= ”檔案名稱來指定名稱

data<-read.xlsx(file="testOfPerf-0.xlsx", sheetIndex=2)

data

r-read.xlsx-範例

呼叫已下載的套件: require

每一次重新開啟 R 後,若需要執行額外下載的套件,可以透過「 require」來呼叫,之後就可以繼續使用相關套件了。

require(xlsx)

Loading required package: xlsx
Loading required package: xlsxjars
Loading required package: rJava

依照檔案格式選擇讀取資料的方法:scanread.csvread.delim

根據格式不同,也可以嘗試以下函數:

matrix(scan(“檔案名稱”)) # 將向量變數讀取為矩陣形式

read.csv(“檔案名稱”) # 讀取用逗號分隔的檔案

read.delim(“檔案名稱”) # 讀取用 tab 分隔的檔案

其他小撇步:file.choose

假如需要常常切換資料夾、或者想用圖形介面的操作方式,也可以利用上述函數,結合「 file.choose() 」, R 會彈出對話視窗可供選擇,例如「 read.xlsx() 」加上「 file.choose() 」。

read.xlsx(file.choose(), sheetIndex=2)

r-file.choose-範例

推薦閱讀

* 統計R語言實作筆記系列 – R的字串處理:GREP套件包(GREP、GREPL、REGEXPR、GREGEXPR、REGEXEC)

* 資料玩家人人必備! 5 分鐘快速部署你的第一支 R SHINY 互動式圖表網頁APP

* 統計R語言實作筆記系列 – 2D視覺化進階 GGPLOT()的基本架構(一)

* 統計R語言實作筆記系列- 直線ABLINE()、曲線CURVE()與多邊形POLYGON()

(Visited 3,309 times, 30 visits today)

Wendell.Huang

科技公司嫌棄太活潑,消費品牌挑剔太沉悶..., 經常必須解釋自己在學什麼, 不小心就摔破對方眼鏡的跨領域玩家。

2 Comments

發表迴響

你的電子郵件位址並不會被公開。 必要欄位標記為 *