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

启动您的职业生涯

完成课程获得认证

开始学习
广告