library(slidify)
create_deck(“Topic01”, git = TRUE)


R 統計軟體初階課程


課程目標


進度安排

第一天:

第二天:


Topic 1: 認識R及語法

  1. 編輯R的程式語法檔
  2. R的入門指令
  3. 安裝、更新與使用套件
  4. 資料物件的管理
  5. 檔案格式基本觀念
  6. 讀取外部檔案
  7. 匯出為其他格式的檔案

開場白


全世界愈來愈多人在談R


前置準備

第一步:下載並安裝安裝R

第二步:下載並安裝Rstudio

第三步:下載上課用的資料檔

第四步:認識書面講義


1. 編輯R的程式語法檔


在語法檔中加註:

# 這是註解,R在執行時會跳過這一行

2. R的入門指令


先來用demo() 指令認識一下R的圖形能力:

demo(graphics)

指派(assign)

串接指令 c( )


> x <- c(20:25)  #冒號表示連續,即從20,21,...,25
> x
## [1] 20 21 22 23 24 25
> x[4]  # 第四個數值
## [1] 23
> 
> y <- x * 40
> y
## [1]  800  840  880  920  960 1000
> x[1] + y[5]
## [1] 980

系統資訊

> version  #查詢自己電腦的系統資訊,注意這指令不必加'()'
##                _                            
## platform       i686-redhat-linux-gnu        
## arch           i686                         
## os             linux-gnu                    
## system         i686, linux-gnu              
## status                                      
## major          2                            
## minor          15.1                         
## year           2012                         
## month          06                           
## day            22                           
## svn rev        59600                        
## language       R                            
## version.string R version 2.15.1 (2012-06-22)
## nickname       Roasted Marshmallows
> date()  #顯示目前時間
## [1] "Fri Aug 17 23:18:54 2012"

路徑

getwd()                  #查詢現在的資料夾
setwd("C:/")             #變更資料夾的位置
# 注意:在Windows中,R使用的路徑,斜線是forward slash "/"


運算子

1.算數運算子

加+ 減- 乘* 除/

商數%/% 餘數%%

次方數^

> 60%/%4
## [1] 15
> 25%%5
## [1] 0
> 2^5
## [1] 32

2. 括號運算子
> 3 + 5 * 6 - 7
## [1] 26
> (3 + 5) * (6 - 7)
## [1] -8
3. 關係運算子
4. 邏輯運算子

其他運算函式

> exp(20)  #自然指數
## [1] 485165195
> log(1000)  #自然對數
## [1] 6.908
> abs(-6)  #取絕對值
## [1] 6
> sqrt(100)  #開根號
## [1] 10
> round(45.69)  #四捨五入
## [1] 46
> ceiling(4.2)  #無條件進位
## [1] 5

> floor(55.2)  #取比此數小的整數
## [1] 55
> trunc(65.45)  #取整數值
## [1] 65
> sort(c(1, 3, 55, 22, 56))  #排序
## [1]  1  3 22 55 56

3. 安裝、更新與使用套件

我們來安裝幾個本課程要用到的套件

安裝套件

install.packages(c("car","gmodels","gdata","Rcmdr"))  

更新套件

update.packages()

update.packages(ask=FALSE)  #也可以使用F來代替FALSE;用T來代替TRUE

使用套件

library(car)

library(gmodels)

# 注意:若無法更新,則應使用管理員最高權限來使用Rstudio和R。
# 也就是在圖示上按右鍵「以管理員身份執行」。


三個Rstudio使用的技巧

1.快速切換工作視窗

2. 快速輸入符號


3. (進階)把常用套件記錄到Rstudio之中免除每次都要掛載library()的麻煩

4.資料物件的管理

物件管理

ls()            列出物件
objects()    列出物件 
rm(x)           清除物件x
rm(list=ls())   清除所有在暫存區的物件  

鎖定資料檔

方式1: attach()

> load("wgcoll.rda")
> table(wgc$g)
## 
##  0  1 
## 28 22
> attach(wgc)
> table(g)
## g
##  0  1 
## 28 22
> detach(wgc)
> table(g)
## Error: object 'g' not found

方式2: with()

> attach(wgc)
> with(wgc, table(g))
## g
##  0  1 
## 28 22

5. 檔案格式基本觀念


matrix() 矩陣

> A <- matrix(1:6, nrow = 2, ncol = 3)
> A
##      [,1] [,2] [,3]
## [1,]    1    3    5
## [2,]    2    4    6
> B <- matrix(1:6, nrow = 2, byrow = T, dimnames = list(R = c("a", 
+     "b"), C = c("c", "d", "e")))
> B
##    C
## R   c d e
##   a 1 2 3
##   b 4 5 6
> C <- matrix(c(7, 1, 7, 3, 4, 5, 2, 0, 8), nrow = 3)
> C
##      [,1] [,2] [,3]
## [1,]    7    3    2
## [2,]    1    4    0
## [3,]    7    5    8

array() 陣列

> a1 <- array(1:24, c(3, 4, 2))
> a1
## , , 1
## 
##      [,1] [,2] [,3] [,4]
## [1,]    1    4    7   10
## [2,]    2    5    8   11
## [3,]    3    6    9   12
## 
## , , 2
## 
##      [,1] [,2] [,3] [,4]
## [1,]   13   16   19   22
## [2,]   14   17   20   23
## [3,]   15   18   21   24

list() 表單

以下三種存取list資料格式的做法很常用,也都適用於list與data frame等資料型態

補充


> LIST <- list(表一=seq(2,10,2), 表二= matrix(1:9, nrow=3), 
+              表三=array(1:8, c(2,2,2)), 表四=data.frame(V1=seq(0,3,1)))
> LIST
## $表一
## [1]  2  4  6  8 10
## 
## $表二
##      [,1] [,2] [,3]
## [1,]    1    4    7
## [2,]    2    5    8
## [3,]    3    6    9
## 
## $表三
## , , 1
## 
##      [,1] [,2]
## [1,]    1    3
## [2,]    2    4
## 
## , , 2
## 
##      [,1] [,2]
## [1,]    5    7
## [2,]    6    8
## 
## 
## $表四
##   V1
## 1  0
## 2  1
## 3  2
## 4  3

> LIST$表四
##   V1
## 1  0
## 2  1
## 3  2
## 4  3

data.frame() 資料框

> DF <- data.frame(V1 = seq(0, 8, 2), V2 = LETTERS[1:5])
> edit(DF)
##   V1 V2
## 1  0  A
## 2  2  B
## 3  4  C
## 4  6  D
## 5  8  E

辨識資料型態

> load("wgcoll.rda")
> class(wgc)
## [1] "data.frame"
> class(wgc$aa)
## [1] "numeric"
> class(wgc$g)  #性別是連續變數!?
## [1] "numeric"

轉換變數的型態

> wgc$newg <- factor(wgc$g, levels = 1:2, labels = c("male", "female"))
> class(wgc$newg)
## [1] "factor"
> wgc$g <- as.character(wgc$g)  #把數值轉為字元(charact)
> class(wgc$g)
## [1] "character"
> wgc$g <- as.integer(wgc$g)  #把字元轉為整數(integers)
> class(wgc$g)
## [1] "integer"

6. 讀取外部檔案(Rda, csv, SPSS, SAS, Stata, Excel)

讀取R的rda檔案:

load("/路徑/TDS08L_indQ.rda")  

讀取逗點分隔的csv檔案:

library(foreign) 
wgc <- read.csv("/路徑/wgcoll.csv")


讀取SPSS的sav檔案:

library(foreign)
nsysu <- read.spss("/路徑/TEDS08L_indQ.sav",
                   use.value.labels=FALSE,
                   to.data.frame=TRUE)

讀取Excel檔案(.xls或.xlsx)

# Windows的電腦請先下載安裝"strawbarry perl" (http://strawberryperl.com)

install.packages("gdata")

library(gdata)

dat <- read.xls("D:\路徑\111110_NSYSU.xls", sheet=1, header=T)

讀取SAS的sas7bdat格式檔案

install.packages("sas7bdat")
library(sas7bdat)
sas <- read.sas7bdat("mlogit.sas7bdat")
tail(sas)

讀取SAS的transport格式檔案

sasdata <- read.xport("路徑")

讀取Stata的dta格式檔案

library(foreign)
statadat <- read.dta("http://www.stata-press.com/data/r10/fish.dta")
head(statadat)

7.匯出為其他格式的檔案

sasnew <- as.data.frame(sas) 

你累了嗎?

用Deducer來脫離苦海

使用Deducer套件來管理資料和變數:


安裝Deducer

install.packages("Deducer")
啟動

另一個GUI新興勢力:Revolution Analytics Enterprise


自學R

透過R內建的說明書自學套件和指令的使用方法

?sum
help.search("standard deviation")         最常用的方式
RSiteSearch("standardized coefficients")  搜尋網路資料庫

網路資源:


到此你已經認識R的全貌