柱标准偏差R.

时间:2013-08-04 21:46:32

标签: r function

我想知道R中是否有内置函数来计算列的标准偏差,就像colMeans计算每列的mean一样。编写我自己的迷你函数(用apply调用sd之类的复合命令)会很简单,但我想知道是否已经有一些我可以使用的东西,同时也保持我的代码看起来干净。

4 个答案:

答案 0 :(得分:48)

一般的想法是扫描该功能。您有很多选择,一个是apply()

R> set.seed(42)
R> M <- matrix(rnorm(40),ncol=4)
R> apply(M, 2, sd)
[1] 0.835449 1.630584 1.156058 1.115269
R> 

答案 1 :(得分:14)

使用colSds库中的matrixStats功能。

library(matrixStats)
set.seed(42)
M <- matrix(rnorm(40),ncol=4)
colSds(M)

[1] 0.8354488 1.6305844 1.1560580 1.1152688

答案 2 :(得分:3)

如果您想将它与群组一起使用,您可以使用:

library(plyr)
mydata<-mtcars
ddply(mydata,.(carb),colwise(sd))



  carb      mpg       cyl      disp       hp      drat        wt     qsec        vs        am      gear
1    1 6.001349 0.9759001  75.90037 19.78215 0.5548702 0.6214499 0.590867 0.0000000 0.5345225 0.5345225
2    2 5.472152 2.0655911 122.50499 43.96413 0.6782568 0.8269761 1.967069 0.5270463 0.5163978 0.7888106
3    3 1.053565 0.0000000   0.00000  0.00000 0.0000000 0.1835756 0.305505 0.0000000 0.0000000 0.0000000
4    4 3.911081 1.0327956 132.06337 62.94972 0.4575102 1.0536001 1.394937 0.4216370 0.4830459 0.6992059
5    6       NA        NA        NA       NA        NA        NA       NA        NA        NA        NA
6    8       NA        NA        NA       NA        NA        NA       NA        NA        NA        NA

答案 3 :(得分:1)

fBasics的功能为colStdevs

 require('fBasics')
 set.seed(123)
 colStdevs(matrix(rnorm(1000, mean=10, sd=1), ncol=5))
[1] 0.9431599 0.9959210 0.9648052 1.0246366 1.0351268