最近在研究excel透视图,想到好像自己在R-分组操作并不是很流畅,顺便学习分享一下。R自带数据集比较多,今天就选择一个我想对了解的mtcars数据集带大家学习一下R语言中的分组计算(操作)。
目录
1 dplyr包中的group_by联合summarize
1.1 group_by语法
1.2 summarise语法
1.3 group_by和summarise单变量分组计算示例
1.4 group_by和summarise多变量分组计算示例
2 ddply
2.1 ddply语法
2.2 ddply分组计算示例
3 aggregate
3.1 aggregate语法
3.2 aggregate分组计算示例
3.3 aggregate分组计算补充(formula形式)
4 splite
正文
首先给大家看一下mtcars数据集的基本情况,data.frame类型,32个观测对象,11个变量。
> head(mtcars)
mpg cyl disp hp drat wt qsec vs am gear carb
Mazda RX4 21.0 6 160 110 3.90 2.620 16.46 0 1 4 4
Mazda RX4 Wag 21.0 6 160 110 3.90 2.875 17.02 0 1 4 4
Datsun 710 22.8 4 108 93 3.85 2.320 18.61 1 1 4 1
Hornet 4 Drive 21.4 6 258 110 3.08 3.215 19.44 1 0 3 1
Hornet Sportabout 18.7 8 360 175 3.15 3.440 17.02 0 0 3 2
Valiant 18.1 6 225 105 2.76 3.460 20.22 1 0 3 1
> str(mtcars)
'data.frame': 32 obs. of 11 variables:
$ mpg : num 21 21 22.8 21.4 18.7 18.1 14.3 24.4 22.8 19.2 ...
$ cyl : num 6 6 4 6 8 6 8 4 4 6 ...
$ disp: num 160 160 108 258 360 ...
$ hp : num 110 110 93 110 175 105 245 62 95 123 ...
$ drat: num 3.9 3.9 3.85 3.08 3.15 2.76 3.21 3.69 3.92 3.92 ...
$ wt : num 2.62 2.88 2.32 3.21 3.44 ...
$ qsec: num 16.5 17 18.6 19.4 17 ...
$ vs : num 0 0 1 1 0 1 0 1 1 1 ...
$ am : num 1 1 1 0 0 0 0 0 0 0 ...
$ gear: num 4 4 4 3 3 3 3 4 4 4 ...
$ carb: num 4 4 1 1 2 1 4 2 2 4 ...
1 dplyr包中的group_by联合summarize
1.1 group_by语法
data为数据集
...为分组变量,可以是一个也可以是多个,多个的话以逗号分割group_by(mtcars, vs, am)
1.2 summarise语法
data为数据集,如果data被group_by定义分组,则根据分组变量分组计算
...为计算函数,可以是一个也可以是多个,多个的话以逗号分割summarise(data,disp = mean(disp),hp = mean(hp))
summarise计算函数Useful functions拓展
Center: mean(), median()
Spread: sd(), IQR(), mad()</