如何在R中按组计算所有列的平均值?


要按组计算所有列的平均值,我们可以在定义好分组后使用`group_by`函数,然后结合`summarise_all`函数和`mean`函数。例如,如果我们有一个名为df的数据框,其中包含一个分组列(例如G)和一些数值列,那么我们可以使用以下命令根据分组列的值计算所有列的平均值:

df%>%group_by(G)%>%summarise_all("mean")

示例1

以下代码片段创建一个示例数据框:

Open Compiler
Grp<-sample(LETTERS[1:4],20,replace=TRUE) Score1<-sample(1:50,20) Score2<-sample(1:50,20) Score3<-sample(1:50,20) df1<-data.frame(Grp,Score1,Score2,Score3) df1

创建的数据框如下:

  Grp Score1 Score2 Score3
1  C   2     1      46
2  C  39    25      21
3  C  25     6      10
4  A   5     8      25
5  A  37    23      17
6  D   4    21      39
7  B  33    40      31
8  C  28    44       3
9  B  40    50       8
10 B  10    49      14
11 B  27    45      42
12 B  45     7       5
13 C  26    34      28
14 C  31    19      12
15 A  29    46      38
16 A  24    38      48
17 A  21    12      22
18 B   1     9      35
19 A  23    20      20
20 B  50    27       9

要加载dplyr包并按Grp列计算所有列的平均值,请将以下代码添加到上面的代码片段中:

library(dplyr) df1%>%group_by(Grp)%>%summarise_all("mean") # A tibble: 4 x 4

输出

如果将以上所有代码片段作为一个程序执行,则会生成以下输出:

   Grp  Score1 Score2 Score3
  <chr> <dbl>  <dbl> <dbl>
1   A   23.2   24.5  28.3
2   B   29.4   32.4  20.6
3   C   25.2   21.5    20
4   D      4     21    39

Explore our latest online courses and learn new skills at your own pace. Enroll and become a certified expert to boost your career.

示例2

以下代码片段创建一个示例数据框:

Open Compiler
Level<-sample(c("First","Second","Third"),20,replace=TRUE) Price1<-rpois(20,8) Price2<-rpois(20,8) Price3<-rpois(20,8) df2<-data.frame(Level,Price1,Price2,Price3) df2

创建的数据框如下:

   Level Price1 Price2 Price3
1  First   11    12     5
2  First    8     6     5
3  First    5    16     6
4  Second   9    11     9
5  Second  12    12    11
6  Second   5    10     8
7  First    7     6     9
8  First   10     6    11
9  Second   4     9     8
10 First    5     9     5
11 Third   14     6     8
12 Third    4    13    11
13 Second   3     8     5
14 Second   8     3     8
15 Second   6    10    10
16 Second  10     3     9
17 First    8     8     5
18 First    6     3    11
19 Third    5    10     9
20 Third   10    11    10

要按Level列计算所有列的平均值,请将以下代码添加到上面的代码片段中:

df2%>%group_by(Level)%>%summarise_all("mean") # A tibble: 3 x 4

输出

如果将以上所有代码片段作为一个程序执行,则会生成以下输出:

  Level  Price1 Price2 Price3
  <chr>  <dbl>  <dbl> <dbl>
1 First   7.5   8.25  7.12
2 Second  7.12  8.25  8.5
3 Third   8.25    10  9.5

更新于:2021年11月11日

1K+ 次浏览

启动您的职业生涯

完成课程获得认证

开始学习
广告