如何在R中按组查找所有列的平均值?

要按组查找所有列的均值,我们可以在使用 group_by 定义组后使用 summarise_all 函数和 mean 函数。例如,如果我们有一个名为 df 的数据框,其中包含一个分组列 G 和一些数字列,那么我们可以使用以下给定的命令通过分组列中的值找到所有列的平均值 -

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

示例 1

以下代码段创建了一个示例数据框 -

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

示例 2

以下代码段创建了一个示例数据框 -

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