计算R中的z分数

use*_*452 -1 r

我有一个示例数据帧:

 data<-data.frame(a=c(1,2,3),b=c(4,5,5),c=c(6,8,7),d=c(8,9,10))
Run Code Online (Sandbox Code Playgroud)

并希望计算数据框中每一行的z分数,并做了:

 scores<-apply(data,1,zscore)
Run Code Online (Sandbox Code Playgroud)

我使用了zscore函数

install.packages(c("R.basic"), contriburl="http://www.braju.com/R/repos/")
Run Code Online (Sandbox Code Playgroud)

并获得了这一点

 row.names     V1            V2          V3
    a      -1.2558275   -1.2649111  -1.0883839
    b      -0.2511655   -0.3162278  -0.4186092
    c       0.4186092    0.6324555   0.2511655
    d       1.0883839    0.9486833   1.2558275
Run Code Online (Sandbox Code Playgroud)

但是当我尝试手动计算数据帧第一行的z得分时,我得到以下值:

      -1.45 -0.29  0.4844, 1.25
Run Code Online (Sandbox Code Playgroud)

手动,对于第一行,我计算如下:

1)计算第一行的行平均值(4.75)

2)从行均值中减去每个值(例如; 4.75-1.,4.75-4.,4.75-6.,4.75-8)

3)每个方差异.

4)将它们加起来并除以第1行中的样品量

5)因此我得到方差(答案= 6.685),然后单独得到第一行的标准差(2.58)

6)然后应用z得分的公式.

Ric*_*ton 6

zscore功能,不管它是什么,似乎是一样scalebase包.

apply(data, 1, scale)
##            [,1]       [,2]       [,3]
## [1,] -1.2558275 -1.2649111 -1.0883839
## [2,] -0.2511655 -0.3162278 -0.4186092
## [3,]  0.4186092  0.6324555  0.2511655
## [4,]  1.0883839  0.9486833  1.2558275
Run Code Online (Sandbox Code Playgroud)

对于每一列,它都在计算中(x - mean(x)) / sd(x).