如何在R中按因子水平查找列均值?


要按因子水平查找列均值,我们可以在使用`group_by`函数创建因子水平组后,使用`summarise`函数和`mean`函数。

例如,如果我们有一个名为df的数据框,其中包含一个因子列(例如F)和一个数值列(例如Num),那么我们可以使用以下命令按因子水平查找Num列的均值:

df%>%group_by(F)%>%summarise(Average=mean(Num))

示例1

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

grp<-sample(LETTERS[1:4],20,replace=TRUE)
response<-rpois(20,5)
df1<-data.frame(grp,response)
df1

创建了以下数据框:

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

要加载dplyr包并按grp列中的因子水平查找response的均值,请将以下代码添加到上面的代码片段中:

library(dplyr)
df1%>%group_by(grp)%>%summarise(Average=mean(response))
`summarise()` ungrouping output (override with `.groups` argument)
# A tibble: 4 x 2

输出

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

 grp   Average
 <chr> <dbl>
1  A   5.71
2  B   4.5
3  C     4
4  D     5

示例2

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

Class<-sample(c("I","II","III"),20,replace=TRUE)
DP<-sample(1:10,20,replace=TRUE)
df2<-data.frame(Class,DP)
df2

创建了以下数据框:

 Class  DP
1   II  10
2    I  10
3    I   7
4   II   4
5   II   1
6   II   2
7  III   8
8    I   6
9   II   4
10   I   4
11 III   4
12   I   4
13   I  10
14 III   8
15 III   3
16  II   3
17 III   5
18   I   3
19 III   9
20   I   6

要按Class列中的因子水平查找DP的均值,请将以下代码添加到上面的代码片段中:

df2%>%group_by(Class)%>%summarise(Average=mean(DP))
`summarise()` ungrouping output (override with `.groups` argument)
# A tibble: 3 x 2

输出

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

 Class  Average
 <chr>  <dbl>
1   I   6.25
2  II      4
3 III   6.17

更新于:2021年11月11日

3K+ 次浏览

启动您的职业生涯

完成课程获得认证

开始
广告