如何查詢R資料框所有列的標準差?


要查詢R資料框中所有列的平均值,我們可以簡單地使用colMeans函式,它會返回平均值。但對於標準差,我們沒有可以直接使用的函式;因此,我們可以使用sd與apply,並引用列來查詢R資料框所有列的標準差。例如,如果我們有一個數據框df,那麼使用apply函式查詢所有列的標準差的語法將是apply(df,2,sd),這裡的2指的是列。如果我們想查詢行的標準差,我們只需要將這個2替換為1。

示例

考慮以下資料框 -

 線上演示

> set.seed(101)
> x1<-rnorm(20,0.5)
> x2<-rnorm(20,1.5)
> x3<-rnorm(20,2.5)
> df1<-data.frame(x1,x2,x3)
> df1

輸出

      x1          x2       x3
1 0.1739635 1.33624433 2.9824588
2 1.0524619 2.20852210 3.2582138
3 -0.1749438 1.23201945 0.1806726
4 0.7143595 0.03607824 2.0404952
5 0.8107692 2.24443582 1.3946163
6 1.6739663 0.08960982 2.9029283
7 1.1187899 1.96706761 3.0689349
8 0.3872657 1.38067989 1.7939167
9 1.4170283 1.96723896 2.2099094
10 0.2767406 1.99813556 1.0161219
11 1.0264481 2.39493720 1.3497447
12 -0.2948444 1.77915200 2.2255288
13 1.9277555 2.50786575 3.0779010
14 -0.9668197 -0.57310649 1.1030974
15 0.2633166 2.68985338 3.2490577
16 0.3066620 0.77562578 1.4488133
17 -0.3497547 1.66798377 2.6653809
18 0.5584655 2.42033516 3.6298091
19 -0.3176704 -0.17160481 3.6737225
20 -1.5503078 1.94846907 2.0721368

查詢df1所有列的標準差 -

> apply(df1,2,sd)
x1 x2 x3
0.8667844 0.9730288 0.9738892

讓我們再看兩個例子 -

示例

 線上演示

> y1<-rpois(20,2)
> y2<-rpois(20,5)
> y3<-rpois(20,8)
> df2<-data.frame(y1,y2,y3)
> df2

輸出

 y1 y2 y3
1 1 9 14
2 1 4 9
3 0 9 11
4 2 4 8
5 1 8 6
6 3 3 18
7 2 5 6
8 2 6 12
9 2 1 3
10 0 4 9
11 2 3 9
12 1 5 15
13 1 6 8
14 1 9 10
15 2 2 12
16 2 3 15
17 2 5 10
18 4 7 11
19 2 5 13
20 3 8 9
> apply(df2,2,sd)
y1 y2 y3
0.978721 2.408319 3.545197

示例

 線上演示

> z1<-runif(20,1,2) > z2<-runif(20,1,5) > z3<-runif(20,2,5) > df3<-data.frame(z1,z2,z3) > df3

輸出

      z1       z2       z3
1 1.907492 3.422703 2.855133
2 1.762290 3.250390 3.475309
3 1.486333 2.107422 3.444077
4 1.250209 1.904570 3.314925
5 1.359045 4.934230 3.312890
6 1.008594 1.393549 2.558971
7 1.235712 4.518207 4.836347
8 1.106235 1.933838 2.436035
9 1.611034 4.089584 4.336852
10 1.204697 2.887437 4.440150
11 1.214610 2.635393 2.660501
12 1.016492 4.292893 2.949746
13 1.328194 3.139884 2.792373
14 1.269595 2.964845 3.565541
15 1.913872 1.057963 2.609570
16 1.417872 3.571295 3.959480
17 1.690566 2.281527 2.831667
18 1.900013 3.137568 3.226023
19 1.207709 4.816393 4.510174
20 1.461033 1.161574 3.305159
> apply(df3,2,sd)

輸出

   z1       z2          z3
0.2907786 1.1771167 0.7123186

更新於: 2020年9月4日

7K+ 次瀏覽

開啟你的職業生涯

透過完成課程獲得認證

開始學習
廣告

© . All rights reserved.