分组统计
1、假定有一组成绩数据,要求根据性别进行分组统计:
> score
ID score1 score2 Gender
1 101 11.35321 0.9 male
2 102 12.58654 0.6 male
3 103 19.79380 0.9 female
4 104 12.01352 0.4 female
5 105 11.97081 0.4 female
6 106 17.37480 0.7 female
7 107 14.24884 0.3 female
8 108 18.47972 0.8 male
9 109 18.74792 0.8 male
10 110 18.90146 0.7 male
2、方法:使用aggregate(x, by, FUN)
其中x是待折叠的数据对象,by是一个变量名组成的列表,这些变量将被去掉以形成新的观测,而FUN则是用来计算描述性统计量的标量函数,它将被用来计算新观测中的值。
> aggregate(score[,c(2,3)],list(score[,4]),mean)
Group.1 score1 score2
1 female 15.08035 0.54
2 male 16.01377 0.76
score[,c(2,3)] 表示对score1和score2列进行分组统计
list(score[,4])表示根据score第4列,也就是性别列进行分组统计。
mean表示统计平均值。
也可以写作下面的形式:
> aggregate(score[,c(2,3)],list(score$Gender),mean)
Group.1 score1 score2
1 female 15.08035 0.54
2 male 16.01377 0.76
可选参考:
library(dplyr)
group_by(data, sex) %>% summarize_each(funs(mean), var1, var2, var3...)