如何在 R 中計算分組資料的 Z 得分?


我們可以使用 ave 函式和 scale 函式來計算分組資料的 z 得分。例如,我們有一個名為 df 的資料幀,其中包含一個分組列(假定為 GROUP)和一個數字列(假定為 Response),那麼我們可以使用以下命令來計算此資料的 z 得分 -

ave(df$Response,df$GROUP,FUN=scale)

示例

考慮以下資料幀 -

 現場演示

grp<-sample(LETTERS[1:3],20,replace=TRUE)
Response<-rpois(20,8)
df1<-data.frame(grp,Response)
df1

輸出

 grp  Response
1  A   8
2  A  11
3  A  14
4  A  10
5  C  11
6  B   8
7  A   5
8  A   6
9  A   9
10 B   5
11 C  13
12 B   4
13 C   9
14 A   5
15 C   8
16 A   6
17 A   5
18 A   7
19 A   4
20 A   6

按分組列 grp 計算 Response 的 z 得分 -

示例

ave(df1$Response,df1$grp,FUN=scale)

輸出

[1]   0.2120368  1.2457162  2.2793957  0.9011564  0.3382407  1.1208971
[7]  -0.8216426 -0.4770828  0.5565966 -0.3202563  1.2402159 -0.8006408
[13] -0.5637345 -0.8216426 -1.0147221 -0.4770828 -0.8216426 -0.1325230
[19] -1.1662024 -0.4770828

示例

 現場演示

class<-sample(c("first","second","third"),20,replace=TRUE)
Y<-rnorm(20)
df2<-data.frame(class,Y)
df2

輸出

    class      Y
1  first   -0.11728051
2  second   0.52111014
3  third    0.10489245
4  second  -1.26830798
5  second   1.43719885
6  second  -0.06000703
7  second   0.11140428
8  first   -0.58586144
9  first    1.33474582
10 second   0.30187417
11 third    0.73870989
12 third   -0.80603254
13 third    1.32022423
14 third   -1.18979778
15 third    0.81707529
16 third   -0.70428792
17 third    0.47795339
18 third    1.27301587
19 second   0.71368222
20 third   -0.36603555

按分組列 class 計算 Y 的 z 得分 -

示例

ave(df2$Y,df2$class,FUN=scale)

輸出

[1] -0.32736040  0.32592308 -0.06879654 -1.83319129 1.43127698 -0.37525369
[7] -0.16842857 -0.79529132  1.12265172  0.06139266 0.63815798 -1.08483444
[13] 1.28677408 -1.51288290  0.72556607 -0.97134937 0.34731243  1.23411828
[19] 0.55828083 -0.59406558

更新於: 16-Mar-2021

537 次檢視

啟動你的 職業

透過完成課程認證

開始
廣告
© . All rights reserved.