R语言-分组统计

分组统计

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...)