教材
• R 語言資料分析:從機器學習、資料探勘、文 字探勘到巨量資料分析 [第二版] • 作者:李仁鐘、李秋緣 • 出版社:博碩文化股份有限公司 • 書號:MP31714 • 出版日期:2017 年 6 月 2 日 • 範例檔案下載R
• R 是統計軟體,也是一種程式設計語言。主要 用於統計分析、繪圖、資料探勘。
• R 由 Ross Ihha 與 Robert Gentlemn 所開發。
• R 有 Windows、Unix、Linux 及 MacOS 等作業 系統的版本。 • R 目前開發的核心團隊由世界各地不同機構所 組成,網站位於 http://www.r-project.org。 3 R 語言資料分析
R 軟體
• The R Project for Statistical Computing
http://www.r-project.org/
• CRAN: Comprehensive R Archive Network (R 綜合典藏網)https://cran.r-project.org/
• RStudio
安裝與執行 R 軟體
• 下載
– https://cran.r-project.org/
– Download R for Windows
– base Binaries for base distribution. – Download R 3.4.3 for Windows
• 安裝
– R-3.4.3-win.exe • 執行
–
安裝與執行 RStudio
• 下載
– https://www.rstudio.com/products/rstudio/
– DOWNLOAD RSTUDIO DESKTOP – RStudio 1.1.423 - Windows Vista/7/8/10 • 安裝
– RStudio-1.1.423.exe • 執行
–
RStudio 視窗操作
• R Script : File → New File → R Script • Console
• Environment / History
• Files / Plots / Packages / Help / Viewer • 網路教學,參閱
http://deepgreat08.blogspot.tw/2015/08/r-studio-20150821.html
R 套件 (Packages)
• 套件是一些有用的程式,能幫助我們快速完成 要做的工作。 • https://cran.r-project.org/web/packages/ • 查詢已經安裝的套件 • 安裝套件 • 使用套件 • 移除套件 • 更新套件查詢已經安裝的套件
• 顯示比較多的資訊 – 指令:installed.packages() • 顯示簡易資訊 – 指令:library() • RStudio 視窗操作 R 語言資料分析 11安裝套件
• 指令:install.packages("套件名稱") • R Console 視窗操作
– 程式套件 → 安裝程式套件…
– 程式套件 → Install package(s) from local files… • RStudio 視窗操作
使用套件
• 指令:library("套件名稱")
移除套件
• 指令:remove.packages("套件名稱") • RStudio 視窗操作
更新套件
• 指令:update.packages() • R Console 視窗操作
– 程式套件 → 更新程式套件…
• RStudio 視窗操作
– Tools → Check for Package Updates…
物件
• R 語言透過物件 (object) 來運作。 1. 物件使用名稱 (name) 和值 (content) 來描述 其特性。 2. 物件不需要事先宣告(物件名稱)。 3. 指定 (assignment) 運算:<− 或 = 例:> x <− 10 (註:> 為提示符號) 4. 顯示物件的值:直接寫出物件名稱或用 print( ) 函數 例:> x > print(x)物件名稱(變數)
• 命名可以使用英文字母、數字、句點「.」、 底線「_」。 • 物件名稱第一個字母必須是英文字母或句點。 • 若以句點當物件的第一個字母,則其後面接的 第一個字元不能為數字。 • 英文字母大小寫是不同的。 • 有保留字,例如「c」與「NA」等。 R 語言資料分析 17清除物件名稱
• 使用 rm( ) 函數
例: > rm(x) # 若已經有一個 x 物件
• 清除所有的物件名稱
例:> rm( list = ls( all = TRUE ) ) 或
> rm( list = ls( ) ) RStudio
物件的屬性
• 所有物件都有兩個內在屬性 – 資料型態 (mode) – 長度 (length) • 可以透過函數取得,例如 > mode(x) > length(x) (註:長度就是元素個數) R 語言資料分析 19資料型態
• R 語言有四種表示「資料」的基本資料型態: 1. 數值 (numeric):例如 100、3.14
2. 文字 (character):例如 "Good"、"早安" 3. 複數 (complex):例如 3 + 2i、5 − 4i
4. 邏輯 (logical):僅有 TRUE (T) 與 FALSE (F) • 其他資料型態
– 函數 (function)
程式撰寫
• 執行多個指令於同一列中,使用分號「;」隔開。 例如 > x <− 10; y <− x^2; z <− sqrt(y); z • 註解:井字號「#」 R 語言資料分析 21物件型態
• R 語言是物件導向,常用物件型態: 1. 向量 (vector) 2. 陣列 (array) 3. 矩陣 (matrix) 4. 因子 (factor) 5. 資料框架 (data frame) 6. 串列 (list)向量 (1)
• 向量是由包含相同資料型態的元素組成。 1. 使用 c( ) 函數 (combine) 建立,例如 > V1 <− c(10, 5, 3.1, 6.4, 9.2, 21.7) 2. 使用 assign( ) 函數指定給物件,例如 > assign("V2", c(10, 5, 3.1, 6.4, 9.2, 21.7)) 注意:assign( ) 函數第一個參數必須使用引號。 3. 使用「:」建立,例如 > V3 <− 100:105,也就是 > V3 <− c(100, 101, 102, 103, 104, 105) 4. 向量元素為遺失值時,可給予 NA(大寫) > V <− c(10, 5, NA, 6.4, 9.2, 21.7) R 語言資料分析 23向量 (2)
5. 用中括號 [] 存取向量中的特定元素,例如
> V1[2] # 注意索引 (index) 從 1 開始。
6. Inf、-Inf、NaN (Not a Number)、NULL
> V <− c(1, -2, 0) > V/0
[1] Inf -Inf NaN
> V <− NULL # 物件的長度為 0 > length(V)
陣列 (1)
• 陣列是多維度的向量。 1. 例如,一個三維的陣列 X 用 X[i, j, k] 表示 特定元素。 2. 使用 dim( ) 函數指定陣列維度 (dimension)。 例如: > x <− 1:24 # 指定向量的元素 > dim(x) <− c(3, 4, 2) # 指定陣列維度 3. R 語言陣列元素是以行為主 (column major) 的方式排列。 R 語言資料分析 25陣列 (2)
4. 使用 array( ) 函數建立,例如 > X <− array(1:24, dim = c(3, 4, 2)) 或 > X <− array(1:24, c(3, 4, 2)) # 參數名稱 dim 可省略 5. 使用 rbind( ) 或 cbind( ) 函數建立:例如 > X1 <− c(1, 2, 3, 4) > X2 <− c(5, 6, 7, 8) > X <− rbind(X1, X2) > Y <− cbind(X1, X2) # X 與 Y 是兩個不同的陣列矩陣 (1)
• 矩陣就是一個二維的陣列。
1. 使用 matrix( ) 函數建立,例如
> X <− matrix(1:24, 4, 6, TRUE)
說明:matrix(data, nrow, ncol, byrow, dimnames)
2. 使用 rbind( ) 與 cbind( ) 函數建立矩陣。 例如: > X1 <− c(1, 2, 3); X2 <− c(4, 5, 6) > X3 <− c(7, 8, 9) > X <− cbind(X1, X2, X3) 3. 矩陣轉置 (transposition):t( ) 函數,例如 > Y <− t(X) R 語言資料分析 27
矩陣 (2)
4. 矩陣的列數與行數:nrow( )、ncol( ) 函數 > m <− nrow(Y) > n <− ncol(Y) 5. 顯示矩陣 X 的第一列元素 > X[1, ] 6. 顯示矩陣 X 的第一行元素 > X[, 1] 7. 顯示矩陣 X 的第一及三列元素 > X[c(1, 3), ] 8. 移除矩陣 X 的第一行元素矩陣 (3)
9. 計算方陣的特徵值 (eigenvalues) 和特徵向 量 (eigenvectors):eigne( ) 函數,例如 > objEigen <− eigen(M) 10. 矩陣相乘使用「%*%」運算子,例如 > Z <− Y %*% X11. 修改矩陣的行名稱,例如
> colnames(z) <− c("c1", "c2", "c3")12. 修改矩陣的列名稱,例如
> rownames(z) <− c("r1", "r2", "r3") R 語言資料分析 29資料框架 (1)
• 資料框架是二維,觀念上就是「表格」。 • 資料框架中,同一列的各元素可以有不同的資 料型態,但同一行的資料型態與長度必須相同。 • 資料框架的每一列是一組觀察值 (observation) 或稱為案例 (case)。每行定義變數名稱表示。 1. 範例: > id <− c(1, 2, 3, 4) > age <− c(25, 30, 35, 40) > sex <− c("M", "M", "F", "F") > pay <− c(30000, 40000, 45000, 50000)資料框架 (2)
2. 取得某一位置的元素,例如 > X[3, 2] 3. 取得某一行所有的元素,例如 > X$age 4. 取得某一行的名稱與所有元素,例如 > X[2] 5. 類似 Excel 介面的編輯器,建立或修改資 料框架的值,使用 edit( ) 函數,例如 > X <− edit(X) # 在儲存格中按滑鼠右鍵兩下, 才能開始編輯或修改 R 語言資料分析 31因子
• 因子是一種特殊的向量,用來將向量中的離散 資料分群組 (grouping)。 • Levels 屬性表示群組的所有離散值。 – 範例: > sex <− factor(c(1, 1, 0, 0, 1, 2, 4)) # 建立因子 > sex [1] 1 1 0 0 1 2 4 Levels: 0 1 2 4 • 若資料是字串,顯示時不會印出雙引號「"」。串列(或稱為列表)(1)
• 串列是一個有序序列 (order sequence),其中的 組成元素 (component) 可以是不同型態的物件。 • 串列中組成的元素可以包括數值、邏輯、文字、 複數、向量、矩陣、因子及資料框架等。 • 使用 list( ) 函數建立。 R 語言資料分析 33串列 (2)
1. 範例:
> id <− c(1, 2, 3)
> sex <− c("M", "M", "F")
> pay <− c(30000, 40000, 45000) > Y <− data.frame(id, sex, pay)
> gender <− factor(c("男", "男", "女"))
> Paul.Family <− list(name = "Paul", wife = "Iris", no.kids = 3, kids.age = c(25, 28, 30), gender, Y)
• 注意:list( ) 中使用「=」設定元素值