R语言中提供了许多用来整合和重塑数据的强大方法。
- 整合 aggregate
- 重塑 reshape
在整合数据时,往往将多组观测值替换为根据这些观测计算的描述统计量。
在重塑数据时,则会通过修改数据的结构(行与列)来决定数据的组织方式。
样例数据:mtcars
从Motor Trend杂志(1974)提取的,它描述了34种车型的设计和性能特点(气缸数、排量、马力、每加仑汽油行驶的英里数,等等,详细可使用help(mtcars)。
一、转置
反转行和列,使用函数t()即可对一个矩阵或数据框进行转置。
cars <- mtcars[1:5,1:4]
> cars
mpg cyl disp hp
Mazda RX4 21.0 6 160 110
Mazda RX4 Wag 21.0 6 160 110
Datsun 710 22.8 4 108 93
Hornet 4 Drive 21.4 6 258 110
Hornet Sportabout 18.7 8 360 175
t(cars)
> t(cars)
Mazda RX4 Mazda RX4 Wag Datsun 710 Hornet 4 Drive Hornet Sportabout
mpg 21 21 22.8 21.4 18.7
cyl 6 6 4.0 6.0 8.0
disp 160 160 108.0 258.0 360.0
hp 110 110 93.0 110.0 175.0
二、整合数据
在R中使用一个或者多个by变量和一个预先定义好的函数来折叠(collapse)数据。
调用格式:
aggregate(x, by, FUN)
- x:数据对象
- by:变量名组成的列表
- FUN:用来计算描述性统计量的标量函数
示例:根据气缸数和档位数整合mtcars数据,并返回各个数值型变量的均值。
options(digits = 3) # 修改小数点后的精确位数
attach(mtcars) # 加载进内存
aggdata <- aggregate(mtcars, by = list(cyl,gear), FUN = mean, na.rm = TRUE)
aggdata
detach(mtcars) # 从内存删除
> aggdata
Group.1 Group.2 mpg cyl disp hp drat wt qsec vs am gear carb
1 4 3 21.5 4 120 97 3.70 2.46 20.0 1.0 0.00 3 1.00
2 6 3 19.8 6 242 108 2.92 3.34 19.8 1.0 0.00 3 1.00
3 8 3 15.1 8 358 194 3.12 4.10 17.1 0.0 0.00 3 3.08
4 4 4 26.9 4 103 76 4.11 2.38 19.6 1.0 0.75 4 1.50
5 6 4 19.8 6 16