R

0317060 林泱辰

簡介


What is R ?

R 這個名稱其實代表兩個東西,一個是 R 這個程式語言,另外一個是執行 R 程式的軟體環境,所以 R 這個字同時是程式語言以及軟體的名稱。R 是一套統計分析及繪圖的語言及軟體,誕生於 90 年代初期,由奧克蘭大學的 Ross Ihaka 與 Robert Gentleman 所發展出來的,它是以 S 語言(誕生於 70 年代的貝爾實驗室,主要作者為 John Chambers)為基礎所發展出來的一個 GNU 專案,免費且開放的方式釋出其原始碼,目前 R 這個專案是由 R Core Team 的二十位成員負責開發與維護,已是一套功能強大且廣為使用的自由軟體。

R 語言本身是屬於高階的直譯式語言(interpreted language),所以在程式執行之前,使用者不需要自己編譯程式,我們可以把心力全部投入在資料的分析上,不用去管太低階的電腦問題,就跟使用 Matlab 這類的程式語言類似。R 的介面不像 SPSS 之類的 GUI 產品,而是靠輸入簡單的程式碼來操作(如 SAS ),不過實際上因為分析功能大多已經有現成的套件( packages )可供使用且可以下載具備開發環境的軟體程式R Studio

R 語言在各領域的應用

R廣泛運用在各領域上的分析處理,例如神經網路、遺傳演算法 (ex.Multiple Sequence Alignment )、生物資訊、金融科技、資料採礦、訊號處理、機器學習、網頁程式和大數據分析...等。

初級、中級、高級,以及相關領域書籍

特色

免費:R 是以開放原始碼的授權釋出的,完全免費。
開放:R 是S 語言的開放原始碼實做版本,您可以將 S-plus 的程式碼直接放進 R 中執行。
佔有率高:SAS 是最普遍被使用的統計軟體,但在學術界最普及的統計軟體是 R 與 S 語言,尤其在統計的期刊中,常常可以看到 R 語言的蹤跡。
運算:方便的矩陣操作與運算能力
分析:完整而連貫的資料分析能力(大量套件程式可供下載)
繪圖:強大的繪圖功能(可參考R graph gallery 網站)
跨平台:R 可以在各種平台上運作,包含 Windows、Macintosh、Linux 等數十種平台。
彈性大:R 是一種程式語言,使用者可以自行撰寫適合自己的分析程式。
互動式:傳統的統計分析軟體,是將所有的統計分析過程一次做完,產生報表,而 R 可以互動式的一步一步處理,使用者可以依照每一步的結果而決定下一步該如何處理。

安裝於Linux/GNU (Ubuntu)

R 官方的說明文件

以apt指令五步取得

# step 1 檢視 Ubuntu 版本

lsb_release –a

# step 2 備份sources.list

sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak

# step 3 編輯sources.list

sudo gedit /etc/apt/sources.list

# 在檔案最後新增一列與以下內容

deb http://cran.csie.ntu.edu.tw/bin/linux/ubuntu quantal/

# 按 File->Save 儲存檔案

# step 4 更新套件

sudo apt-get update

# step 5 安裝R

sudo apt-get install r-base 或採用包括發展工具等套件指令
sudo apt-get install r-base r-base-dev

(其他平台版本下載可參見官網點選CRAN (Comprehensive R Archive Network) )

開始使用:著重於資料讀取與資料視覺化的介紹

>R 使用者介面 (R Console)


<基本指令介紹>

1. 直接輸入我們想要計算的數學式子


2. 建立變數,將數值或各種資料儲存起來,其中< - 為 R 特有的指定運算子(assignment operator)


3. 尋找變數,使用apropos函數來搜尋關鍵字


4. 呼叫函數,ex 'sum( )' ,'exp( )'

5. 可用'demo( )' 來看一些示範程式,用 'help( )' 來檢視線上輔助檔案,或 用 'help.start( )' 透過 HTML 瀏覽器來看輔助檔案。

6. 用'dir( )'來檢視有哪些資料檔案;用 'q( )' 離開 R。

<讀取資料常用指令>


一套統計工具,最重要最基本的便是如何將資料輸入

1. 'read.table( )' # 必須先確定資料的位置,輸入完整的路徑


2. 'read.fwf( )' # 固定欄位寬度的載入方式



3. 'read.xlsx( )'
data<-read.xlsx(file="data.xlsx", sheetIndex=2)
#sheetIndex=數字用來指定第幾張工作表,sheetName= ”檔案名稱”來指定名稱

4. 'read.delim( )'
5. 'read.csv( )'
6. 'scan( )'
#依照檔案格式選擇讀取資料的方法
matrix(scan(“檔案名稱”) 將向量變數讀取為矩陣形式
read.csv(“檔案名稱”) 讀取用逗號分隔的檔案
read.delim(“檔案名稱”) 讀取用 tab 分隔的檔案

<繪圖指令>

R的繪圖套件相當豐富,除了一般的2D統計圖表還可以輕易繪製出工程上常用到的3D圖形。此外,R還包含了一些特殊的繪圖功能,像是自訂函數、繪製世界地圖資料、互動式圖表、把圖表輸出到網頁上(R Shiny)等等。R的社群經常喜歡把這種跨領域綜合繪圖的能力概稱為「資料視覺化(Data Visualization)」,甚至結合設計來做跨領域系統的整合呈現傳達,稱為「資訊設計(Information Desigin)」

<常用2D統計圖表指令>

R 的許多繪圖函數都能自動分析資料格式,並做出修正或錯誤回報,但並非每次都能順利執行。因此繪製統計圖表時,首先要注意的是資料型態與圖表是否吻合?
可以內建三種資料集範例來做測試「sleep」、「islands」、「rivers」為例。







1. 直方圖 hist( )

2. 長條圖 barplot( )

3. 圓餅圖 pie( )

4. 盒鬚圖 boxplot( )

5. 機率密度圖 plot(density( ))

6. 散佈圖 qqplot( )

7. Plot( )函數 # 當輸入「 data.frame() 」格式的資料時, plot 函數會自動產生 R x C 的散佈矩陣
用來控制圖表類型的參數是「 type 」

par(mfrow=c(3,3)) #先切割圖表輸出為3 X 3
plot(sleep$extra,type="p") # 點圖
plot(sleep$extra,type="l") # 線圖
plot(sleep$extra,type="c") # 線圖去除資料點
plot(sleep$extra,type="o") # 線圖加上資料點
plot(sleep$extra,type="h") # 長條圖
plot(sleep$extra,type="s") # 階梯圖
plot(sleep$extra,type="n") # 空白圖


<視覺化繪圖指令>

1. 畫直線 Abline( ) # 本身無法直接做圖,得先畫出一張圖表之後再當成輔助線加上去。若回歸方程式還未知可以 lsfit() 函數快速取得迴歸參數
2. 畫曲線 Curve( )
3. 畫多邊形算面積Polygon( )

<進階2D繪圖指令ggplot( )>

ggplot(data = NULL, …) #只要輸入資料就好
from 參考學習資料3


建立畫布 (如Photoshop圖層概念),再以geom (幾何圖形)」、「 aes (外觀設定)」疊上新圖層,甚至改變繪圖座標的 coord 、佈景主題 theme 以及控制圖形輸出的 facet。

範例
:使用R內建的資料集「CO2 」

參考學習資料
1
2
3
4
5
6