1. 程式人生 > >◮ R語言筆記(一): 向量及向量的基本操作

◮ R語言筆記(一): 向量及向量的基本操作

R語言簡介:

 

R語言是一種統計繪圖語言,也指實現該語言的軟體;
R語言是從S語言演變而來,S語言在20世紀70年代誕生於貝爾實驗室,其是用來進行資料探索/統計分析/作圖的解釋性語言;
R語言是在1995年由紐西蘭某大學的學生基於S語言的原始碼編寫的一套能執行S語言的軟體,就是R軟體,命名統稱為R語言;
 

****************************************************************************************************************************************

 

 

一:向量

1:什麼是向量?

    這裡可以將向量理解為C語言中的陣列,也可以將其理解為數學中的數列,都能夠很好地理解;

    *但是如果使用R語言中的判斷函式is.array( )來判斷使用x=c(1,1,1,1)輸入放入變數x,會提示不是陣列,因為這裡的判斷預設      二維陣列才顯示是陣列。

    *直接輸入二維陣列的話就需要在輸入的時候新增維度資訊:

> x = c(1,2,3,4,5,6);dim(x)<-c(2,3)
> x
     [,1] [,2] [,3]
[1,]    1    3    5
[2,]    2    4    6

    R語言中的許多操作都是基於向量進行的;

2:向量的幾種常見的表示與賦值:

     示例:> x = c(1:10)    #將1~10十個數賦值給x

                > x <- c(1:10)    #將1~10十個數賦值給x (使用箭頭也是可以的)

                > x2 = c(4:1, 2:5)    # 輸出結果 [1] 4 3 2 1 2 3 4 5

                > x    #直接輸出x的值

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

                > x [3]    #輸出x的第三個資料,3是索引值

                >length(x)    #輸出x的長度

                > x = scan()     #從鍵盤輸入資料,一行輸入一個,回車繼續輸入,兩次回車停止輸入

> x = scan()
1: 1
2: 2
3: 23
4: 
Read 3 items

3:產生26個字母的向量:

> letters[1:30]
 [1] "a" "b" "c" "d" "e" "f" "g" "h" "i" "j" "k" "l" "m" "n" "o" "p" "q" "r" "s" "t" "u" "v" "w" "x" "y" "z" NA  NA  NA 
[30] NA 

4:seq()函式產生向量:

  *seq: sequence 序列、按順序排好

> x = seq(1,50,by=2)
> x
 [1]  1  3  5  7  9 11 13 15 17 19 21 23 25 27 29 31 33 35 37 39 41 43 45 47
[25] 49

> x = seq(1,50)
> x
 [1]  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
[25] 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48
[49] 49 50

 

 

二:對向量的基本操作(對資料的處理)

1:數理統計部分概念

     *具體不理解的名詞可自行查詢資料

      均值:mean()

      和:sum()

      連乘:prod()

      中位數:median()

      最大值:max()

      最小值:min()

      極差:max()-min()

      方差:var()

      標準差:sd()

      標準誤差:var()/sqrt(length())

      變異係數:sd/mean()**100

      偏度:skewness()

      峰度:kurtosis()

      五數總括:fivenum()

     -->>>★★部分概念的初步解釋:

            1:峰度(kurtosis)
                峰度(peakedness;kurtosis)又稱峰態係數。
                表徵概率密度分佈曲線在平均值處峰值高低的特徵數。直觀看來,峰度反映了峰部的尖度。
                樣本的峰度是和正態分佈相比較而言統計量,如果峰度大於三,峰的形狀比較尖,比正態分佈峰要陡峭。
                反之亦然。
            2:偏度(skewness)
                偏度(skewness)也稱為偏態、偏態係數,是統計資料分佈偏斜方向和程度的度量,
                是統計資料分佈非對稱程度的數字特徵。資料呈現左偏的狀態,偏度為負值,右偏的話偏度為正值。
            3:變異係數:
                比較兩組資料的離散程度,因為使用標準差比較離散程度的時候可能出現數據量綱不同的情況,
                所以定義了變異係數,變異係數是標準差與平均值的比值。
            4:五數總括:
                使用具有特徵的資料對整體資料進行概括:最小值、下四分位數、中位數、上四分位數、最大值
           ★5:標準差與標準誤差
                標準差與標準誤差的意義、作用和使用範圍均不同。
                標準差(亦稱單數標準差)一般用SD(Standard Deviation)表示,
                是表示個體間變異大小的指標,反映了整個樣本對樣本平均數的離散程度,是資料精密度的衡量指標;
                而標準誤差一般用SE(Standard error)表示,
                反映樣本平均數對總體平均數的變異程度,從而反映抽樣誤差的大小,是量度結果精密度的指標。

 

2:其他基本操作

      summary()    #求值(最小值、下四分位數,中位數、均值、上四分位數、最大值)

      sort()    #排序(從小到大)

      rev(sort())    #reverse倒置,即按照由大到小排序

      which()    #定位查詢功能 --->>> 下面附上部分which用法程式碼:

> a = c(1,2,3,4,5,6,7,8,9,11,10,2,2,2,2)

> which.max(a)
[1] 10

> a[which.max(a)]
[1] 11

> which(a==2)
[1] 2 12 13 14 15

> a[which(a==2)]
[1] 2 2 2 2 2

> which(a<2)
[1] 1

 

 

三:匯入第三方程式包與第三方程式包的使用

*這裡之所以提到第三方程式包的使用問題,是因為上面的求偏度和峰度需要使用第三方的R包,軟體本身並沒有這個工能;

1: 選單欄->程式包->安裝程式包->會提示選擇不同的伺服器(與下載速度有關)

2:   選擇需要的包下載(如果該包需要用到其他的包,這裡會自動一起下載所有相關的包)

上面求偏度和峰度使用的R包(這裡給出一個方便使用的,實現該功能的包不止一個):moments

下載完包後仍不能使用該函式,需要載入剛剛安裝的包,載入的方法有兩種:

         1:library(包名)

         2:選單欄->程式包->載入程式包->選擇需要使用的包即可

 

 

 

四:附上相關實踐程式碼

> Student = c(90,78.8,68.8,78.0,70.4,80.5,80.5,69.7,71.2,73.5,
+ 79.5,75.6,75.0,78.8,72.0,72.0,72.0,74.3,71.2,72.0,
+ 75.0,73.5,78.8,74.3,75.8,65.0,74.3,71.2,69.7,68.0
+ ,73.5,75.0,72.0,64.3,75.8,80.3,69.7,74.3,73.5,73.5)

> mean(Student)    #計算均值
[1] 74.0325

> var(Student)    #計算方差
[1] 22.03199

> sd(Student)    #計算標準差
[1] 4.693825

> median(Student)	#計算中位數
[1] 73.5

> max(Student)-min(Student)	#計算極差
[1] 25.7

> var(Student)/sqrt(length(Student))	#計算標準誤差
[1] 3.483564

> sd(Student)/mean(Student)**100 	#計算變異係數
[1] 5.361488e-187

> skewness(Student)	    #計算偏度
[1] 0.7539625

> kurtosis(Student)    #計算峰度
[1] 4.983252

> fivenum(Student)     #計算五數總括
[1] 64.3 71.2 73.5 75.8 90.0

 

 

 

 

 

****************************************************************************************************************************************

 

             最快的腳步不是跨越,而是繼續,最慢的步伐不是小步,而是徘徊。

 

****************************************************************************************************************************************