如何在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
广告