R语言-分组统计

时间:2024-01-06 09:42:14

分组统计

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