如何查找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+ 次浏览

开启你的职业生涯

通过完成课程获得认证

开始学习
广告