2015年3月3日 星期二

R ─ 基礎&向量

R

基本概念

○ 為直譯式語言  (單獨一行執行,可直接看到執行結果)

○ 為物件導向語言


# 應用範圍


● 統計分析

● 迴歸分析
● 資料分群
● 資料分類
● 推薦系統
● 文字探勘

_________________________________________________________________________________

#  套件相關說明

   
    ○ 觀看套件

       help(package = 'knitr')

    ○ 觀看功能說明

       ?knitr::功能

    ○搜尋說明功能
       
       help.search("功能")

-----指令-----------------------------------------------------------------------------------------------------------------------------------*

○ demo() :觀看範例

○ q() :離開 R Session  ( 結束R Studio )


○ ls():觀看現有變數


             ls()
                         "A"    "B"    "i"    "j"    "mat"  "mat1" "mat2" "V"   

○ rm:刪除變數


             例: rm(A)



# 用來當單行註解




#--- 指派(assign)---------------------------------------------------------------------------------------------------------------------------------*


  • 分為兩種 " = " & " <- "  皆是將左邊的值指定給右邊的值
         例:
                 A = 5
              
                 A <- 5

              
                以上兩種寫法皆可但請擇一使用,不要混用以免解讀困難
  • 推薦使用 " <- " , 在Rstudio中,Alt+- 就可以打出這個符號


#-----運算子應用---------------------------------------------------------------------------------------------------------------------------------*

○ 加
          > 5+3
          [1] 8

○減
          > 5-3
          [1] 2

○乘
         > 5*3
         [1] 15

○除
         > 5/3
        [1] 1.666667


        > 11/2
        [1] 5.5
                       (此處並不會四捨五入)


○指數
              > 5^6
             [1] 15625

○求餘數
                  > 5%%3
                  [1] 2



#-----資料型態---------------------------------------------------------------------------------------------------------------------------------------*


分為三種,數值、字串 、布林

# 數值 
              numer 

# 字串
             char

# 布林
          logic            

※ 如果要檢查資料型態可以用class()

 例:

# 數值 
>Apple =49
> Apple             → 秀出Apple的內容
[1] 49

> class(Apple )
[1] "numeric"   → 秀出型態


# 字串
> word="Hello World"
> word
[1] "Hello World"

> class(word)
[1] "character"   → 秀出型態


# 布林
> boolean= FALSE        ps. TRUE & FALSE 皆為大寫字母
> boolean
[1] FALSE

> class(boolean)

[1] "logical"   → 秀出型態





※ 不同的資料型態無法一起做運算

_________________________________________________________________________________

向量vector

# 串接指令 c( )

  • 用來串連多個字串; c是 “Combine Values into a Vector or List” 意思
  • 所謂的vetor字面上是「向量」的意思,在此是指同樣屬性的資料的集合(如都是數字或都是文字)。
  • 也可以將 c() 想像為一個盤子用來裝東西用的
  • 請注意只能使用小寫c,大寫C不適用
# 不同型態的向量

數值

> price_vec = c(100,80,60)             # price_vec =  變數名稱   vector (向量)
> price_vec
[1] 100  80  60


字串

> fruit_vec = c("apple","berry","orange")
> fruit_vec

[1] "apple"  "berry"  "orange"


#----- 向量的運算------------------------------------------------------------------------------------------------------------------------------*


> x = c(1,3,5)
> y = c(2,4,6)

> x+y
[1]  3  7 11

> x-y
[1] -1 -1 -1

> x*y
[1]  2 12 30

> x/y
[1] 0.5000000 0.7500000 0.8333333

> y%%x
[1] 0 1 1


加總向量 sum()

> x = c(1,3,5)
> sum(x)
[1] 9


------指定名稱 names( )-----------------------------------------------------------------------------------------------------------------*

○ 使用指定名稱names前

> price_vec = c(100,80,60)
> price_vec


[1] 100  80  60             # result

○ 使用指定名稱names後
> names(price_vec) = c("apple","berry","orange")             # 將要被指定的值代入names(),取代的值放入c()內
> price_vec

 apple  berry orange     # result
   100     80     60 


-----判斷向量是否符合條件-------------------------------------------------------------------------------------------------------*

以布林值表示結果  (TRUE ,  FALSE)

○ 大於
 price_vec > 70
 apple  berry orange 
  TRUE   TRUE  FALSE 


○ 小於
> price_vec < 70
 apple  berry orange 
 FALSE  FALSE   TRUE 


○ 大於等於
> price_vec >= 80
 apple  berry orange 
  TRUE   TRUE  FALSE 


○ 小於等於
> price_vec <= 80
 apple  berry orange 
 FALSE   TRUE   TRUE 


○ 等於
> price_vec == 100
 apple  berry orange 
  TRUE  FALSE  FALSE 


○ 不等於
> price_vec != 70
 apple  berry orange 

  TRUE   TRUE   TRUE 


------自動產生向量-------------------------------------------------------------------------------------------------------------------*


   ○ 產生 1~15
    
      > X = 115     := 到
      > X
      [1]  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15


    ○ 產生 1~15 (seq的用法)
      
        > y = seq(1,15)        , = 到 
        > y
       [1]  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15

#----- seq()  產生不同類型的向量----------------------------------------------------------------------------------------------------*


> seq(1,15,2)
[1]  1  3  5  7  9 11 13 15

● 1 = 起始數值
● 15 = 終止數值
● 2 = 每次跳號數值

> seq(1,5, by = 0.5)
[1] 1.0 1.5 2.0 2.5 3.0 3.5 4.0 4.5 5.0

● 1 = 起始數值
● 15 = 終止數值
● 2 = 每次增加的數值

> seq(1,15,length=9)
[1]  1.00  2.75  4.50  6.25  8.00  9.75 11.50 13.25 15.00

● 1 = 起始數值
● 15 = 終止數值
● 2 = 將1~15平均分配為length值的個數

----rep ( ) 產生重複的向量元素---------------------------------------------------------------------------------------------------*

> rep(c(5,2),3)
[1] 5 2 5 2 5 2

● c( )內的數字重複,N次

> rep(c(3,9),each=2)
[1] 3 3 9 9
 ● c( )內的數字依序重複each=N次


> rep_len(c(7,1),7)

[1] 7 1 7 1 7 1 7
●c( )內的數字依序且重複 直到長度=N


#----- vector( ) 產生初始向量 --------------------------------------------------------------------------------------------------------*
                                                           什麼時候用得到

○ 數值
> vector("numeric",length=5)
[1] 0 0 0 0 0                                       (初始值為0)

○ 字串 
> vector("character",length=5)
[1] "" "" "" "" ""                                  (初始值為空字串)

○ 布林
> vector("logical",length=5)

[1] FALSE FALSE FALSE FALSE FALSE             (初始值為FALSE)

*---------------------------------------------------------------------------------------------------------------------------------------------*

例題:找出BMI異常的人

height_vec=c(180,169,173)                                                       # 身高

weight_vec=c(73,87,43)                                                             # 體重
bmi_vec = weight_vec / (height_vec/100)^2                         # 求BMI
names(bmi_vec) = c("Brain","Toby","Sherry")                       
bmi_vec



# 判斷條件
bmi_vec < 18.5

bmi_vec >= 18.5 & bmi_vec < 27
bmi_vec >= 27 & bmi_vec < 30
bmi_vec >= 30 & bmi_vec < 35
bmi_vec >= 35
bmi_vec >= 18.5 & bmi_vec < 24
ifelse(bmi_vec >= 18.5 & bmi_vec < 24, "正常","異常")               # 在此區間內的值為"正常",反之"異常"

        
*---------------------------------------------------------------------------------------------------------------------------------------------*

例題: 利用seq和sum加總
x = 1:100
sum(x)

y = seq(1,100)

sum(seq(1,100))







相關參考資訊來源:R統計軟體初階課程

                               邱老師教學

     

沒有留言:

張貼留言