◮ R語言筆記(七): 利用Apply()函式在二維資料行、列上進行統計
阿新 • • 發佈:2018-11-03
這裡的二維資料可以是矩陣的形式也可以是資料框的形式,
通過apply()函式的正確使用,可以在二位資料的行、列上進行自己想要的操作:
例如:
每一列/每一行的資料之和sum、中位數median、均值mean和方差var等;
****************************************************************************************************************************************
★Apply() 函式:
*首先給出相應的使用程式碼:
> x1 = c(12,45,78,89,56,23,15,48,75,42) > x2 = c(23,56,89,48,59,26,15,48,78,99) > x3 = c(56,78,55,66,44,22,11,33,10,58) > cbind(x1,x2,x3) #首先組成二維陣列 x1 x2 x3 [1,] 12 23 56 [2,] 45 56 78 [3,] 78 89 55 [4,] 89 48 66 [5,] 56 59 44 [6,] 23 26 22 [7,] 15 15 11 [8,] 48 48 33 [9,] 75 78 10 [10,] 42 99 58 > x = cbind(x1,x2,x3) #將二維陣列複製給x > apply(x,2,max) x1 x2 x3 89 99 78 > apply(x,2,sum) x1 x2 x3 483 541 433 > apply(x,2,min) x1 x2 x3 12 15 10 > apply(x,2,mean) x1 x2 x3 48.3 54.1 43.3 > apply(x,2,median) x1 x2 x3 46.5 52.0 49.5 > apply(x,2,sd) x1 x2 x3 26.72514 28.27032 23.44284 > apply(x,2,var) x1 x2 x3 714.2333 799.2111 549.5667 > apply(x,2,prod) x1 x2 x3 1.095058e+16 4.692829e+16 3.231463e+15 > apply(x,1,max) [1] 56 78 89 89 59 26 15 48 78 99 > apply(x,1,min) [1] 12 45 55 48 44 22 11 33 10 42 > apply(x,1,sum) [1] 91 179 222 203 159 71 41 129 163 199
★apply()函式分析:
> apply(x,2,max)
其中包含了三個引數,第一個引數是指定相應的二維陣列;
第二個引數如果是1就代表在行的方向上進行統計,如果是2就代表在列的方向上進行統計;
第三個引數指出需要對資料進行操作的函式。
★利用which函式對Apply() 函式產生的資料的定位與查詢:
> x x1 x2 x3 [1,] 12 23 56 [2,] 45 56 78 [3,] 78 89 55 [4,] 89 48 66 [5,] 56 59 44 [6,] 23 26 22 [7,] 15 15 11 [8,] 48 48 33 [9,] 75 78 10 [10,] 42 99 58 > apply(x,1,sum) [1] 91 179 222 203 159 71 41 129 163 199 > which.max(apply(x,1,sum)) [1] 3 > x$x1[which.max(apply(x,1,sum))] Error in x$x1 : $ operator is invalid for atomic vectors #這裡網上說可以使用,但是這裡為什麼不能使用呢??沒搞懂~ #但是可以直接使用下面的語句也可以達到相應的效果 > x[which.max(apply(x,1,sum))] [1] 78 > x2[which.max(apply(x,1,sum))] [1] 89 > x3[which.max(apply(x,1,sum))] [1] 55
****************************************************************************************************************************************
最快的腳步不是跨越,而是繼續,最慢的步伐不是小步,而是徘徊。
****************************************************************************************************************************************