如何在R資料框中查詢選定列的每行平均值?


為了在R資料框中查詢選定列的每行平均值,我們可以使用dplyr包的mutate函式和rowMeans函式。

例如,如果我們有一個名為df的資料框,其中包含三個列,例如X、Y和Z,那麼可以使用以下命令找到列X和Y的每行的平均值:

df %% mutate(X_Y_Mean=select(.,c("X","Y")) %% rowMeans())

示例1

以下程式碼片段建立一個示例資料框:

x1<-rpois(20,1)
x2<-rpois(20,2)
x3<-rpois(20,2)
x4<-rpois(20,5)
df1<-data.frame(x1,x2,x3,x4)
df1

建立了以下資料框

  x1 x2 x3 x4
1  1  1  0  2
2  2  1  4  7
3  1  0  3  4
4  2  2  3  2
5  2  1  1  5
6  0  3  1  5
7  0  2  6  5
8  0  3  5  7
9  1  2  2  4
10 3  1  3  7
11 1  1  1  4
12 3  2  0  7
13 0  2  1  3
14 1  5  3  3
15 1  2  0  4
16 0  3  1  6
17 0  2  3  4
18 3  0  1  3
19 0  3  3  1
20 2  2  2  1

要載入dplyr包並在上面建立的資料框上查詢列x1和x2的每行平均值,請將以下程式碼新增到上面的程式碼片段中:

x1<-rpois(20,1)
x2<-rpois(20,2)
x3<-rpois(20,2)
x4<-rpois(20,5)
df1<-data.frame(x1,x2,x3,x4)
library(dplyr)
df1 %% mutate(X1_X2_Mean=select(.,c("x1","x2")) %% rowMeans())

輸出

如果將上面給出的所有程式碼片段作為一個程式執行,則會生成以下輸出:

  x1 x2 x3 x4 X1_X2_Mean
1  1  1  0  2   1.0
2  2  1  4  7   1.5
3  1  0  3  4   0.5
4  2  2  3  2   2.0
5  2  1  1  5   1.5
6  0  3  1  5   1.5
7  0  2  6  5   1.0
8  0  3  5  7   1.5
9  1  2  2  4   1.5
10 3  1  3  7   2.0
11 1  1  1  4   1.0
12 3  2  0  7   2.5
13 0  2  1  3   1.0
14 1  5  3  3   3.0
15 1  2  0  4   1.5
16 0  3  1  6   1.5
17 0  2  3  4   1.0
18 3  0  1  3   1.5
19 0  3  3  1   1.5
20 2  2  2  1   2.0

示例2

以下程式碼片段建立一個示例資料框:

y1<-round(rnorm(20),2)
y2<-round(rnorm(20),2)
y3<-round(rnorm(20),2)
df2<-data.frame(y1,y2,y3)
df2

建立了以下資料框

     y1    y2 y3
1  -1.77  0.25 -0.85
2   0.38 -0.53  0.01
3  -0.87  0.56  0.06
4   0.37  1.55  0.44
5  -0.01  0.29 -0.35
6  -1.22 -0.40  1.55
7  -0.51 -0.28 -0.04
8   0.24  1.85  0.60
9   0.50  0.50 -0.38
10  0.97  1.06  1.98
11  0.88 -0.83 -1.00
12 -1.31  0.56 -1.06
13  0.41 -0.28  1.57
14 -1.66 -1.30  0.56
15 -2.15 -0.47  0.84
16 -0.27 -2.58 -0.44
17 -2.45  0.90 -2.49
18 -1.82 -1.39 -0.31
19  0.15  0.19 -0.70
20  1.00  0.97  0.05

要在上面建立的資料框上查詢列y2和y3的每行平均值,請將以下程式碼新增到上面的程式碼片段中:

y1<-round(rnorm(20),2)
y2<-round(rnorm(20),2)
y3<-round(rnorm(20),2)
df2<-data.frame(y1,y2,y3)
df2 %% mutate(y2_y3_Mean=select(.,c("y2","y3")) %% rowMeans())

輸出

如果將上面給出的所有程式碼片段作為一個程式執行,則會生成以下輸出:

     y1   y2    y3  y2_y3_Mean
1  -1.77  0.25 -0.85 -0.300
2   0.38 -0.53  0.01 -0.260
3  -0.87  0.56  0.06  0.310
4   0.37  1.55  0.44  0.995
5  -0.01  0.29 -0.35 -0.030
6  -1.22 -0.40  1.55  0.575
7  -0.51 -0.28 -0.04 -0.160
8   0.24  1.85  0.60  1.225
9   0.50  0.50 -0.38  0.060
10  0.97  1.06  1.98  1.520
11  0.88 -0.83 -1.00 -0.915
12 -1.31  0.56 -1.06 -0.250
13  0.41 -0.28  1.57  0.645
14 -1.66 -1.30  0.56 -0.370
15 -2.15 -0.47  0.84  0.185
16 -0.27 -2.58 -0.44 -1.510
17 -2.45  0.90 -2.49 -0.795
18 -1.82 -1.39 -0.31 -0.850
19  0.15  0.19 -0.70 -0.255
20  1.00  0.97  0.05  0.510

更新於:2021年11月1日

3K+ 次瀏覽

啟動您的職業生涯

完成課程獲得認證

開始學習
廣告
© . All rights reserved.