它首先将数据进行分组(按行),而后对每一组数据进行函数统计,最后把结果组合成一个比较nice的表格返回。根据数据对象不一样它有三种用法,分别应用于数据框(data.frame)、公式(formula)和时间序列(ts)函数
aggregate(x, by, FUN, ..., simplify = TRUE)测试
aggregate(formula, data, FUN, ..., subset, na.action = na.omit)code
aggregate(x, nfrequency = 1, FUN = sum, ndeltat = 1, ts.eps = getOption("ts.eps"), ...)orm
> 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 ... > attach(mtcars) The following objects are masked from mtcars (pos = 3): am, carb, cyl, disp, drat, gear, hp, mpg, qsec, vs, wt > aggregate(mtcars,by=list(cyl),FUN=mean)#按cyl(汽缸数)进行分类,计算每类均值 Group.1 mpg cyl disp hp drat wt qsec vs 1 4 26.66364 4 105.1364 82.63636 4.070909 2.285727 19.13727 0.9090909 2 6 19.74286 6 183.3143 122.28571 3.585714 3.117143 17.97714 0.5714286 3 8 15.10000 8 353.1000 209.21429 3.229286 3.999214 16.77214 0.0000000 am gear carb 1 0.7272727 4.090909 1.545455 2 0.4285714 3.857143 3.428571 3 0.1428571 3.285714 3.500000 #by参数也能够包含多个类型的因子,获得的就是每一个不一样因子组合的统计 > aggregate(mtcars, by=list(cyl, gear), FUN=mean) Group.1 Group.2 mpg cyl disp hp drat wt qsec vs am 1 4 3 21.500 4 120.1000 97.0000 3.700000 2.465000 20.0100 1.0 0.00 2 6 3 19.750 6 241.5000 107.5000 2.920000 3.337500 19.8300 1.0 0.00 3 8 3 15.050 8 357.6167 194.1667 3.120833 4.104083 17.1425 0.0 0.00 4 4 4 26.925 4 102.6250 76.0000 4.110000 2.378125 19.6125 1.0 0.75 5 6 4 19.750 6 163.8000 116.5000 3.910000 3.093750 17.6700 0.5 0.50 6 4 5 28.200 4 107.7000 102.0000 4.100000 1.826500 16.8000 0.5 1.00 7 6 5 19.700 6 145.0000 175.0000 3.620000 2.770000 15.5000 0.0 1.00 8 8 5 15.400 8 326.0000 299.5000 3.880000 3.370000 14.5500 0.0 1.00 gear carb 1 3 1.000000 2 3 1.000000 3 3 3.083333 4 4 1.500000 5 4 4.000000 6 5 2.000000 7 5 6.000000 8 5 6.000000 #cbind(mpg,hp) ~ cyl+gear 表示使用 cyl 和 gear 的因子组合对 cbind(mpg,hp) 数据进行操做 > aggregate(cbind(mpg,hp) ~ cyl+gear, FUN=mean) cyl gear mpg hp 1 4 3 21.500 97.0000 2 6 3 19.750 107.5000 3 8 3 15.050 194.1667 4 4 4 26.925 76.0000 5 6 4 19.750 116.5000 6 4 5 28.200 102.0000 7 6 5 19.700 175.0000 8 8 5 15.400 299.5000
aggregate()仅容许在每次调用时使用平均数、标准差这样的单返回值函数。没法一次返回若干统计量,要完成这任务能够使用 by() 函数对象
by(data, INDICES ,FUN)
data:一个数据框或矩阵get
INDICES:是一个因子或因子组成的列表,定义了分组it
FUN:是任意函数io
doBy包中的summary By(),其格式为function
summaryBy(formula,data=frame,FUN=function)
formula:接收以下格式form
var1+var2+var3+...+varN~groupvar1+groupvar2+...+groupvarN,在 ~ 左侧的变量是须要分析的数值型变量,而右侧的变量是类别型的分组变量
function:能够分为内建或用户自编的R函数
例:
> library(doBy) Warning message: 程辑包‘doBy’是用R版本3.4.1 来建造的 > summaryBy(mpg+hp+wt~am, data=mtcars, FUN=mystats) am mpg.n mpg.mean mpg.stdev mpg.skew mpg.kurtosis hp.n hp.mean hp.stdev hp.skew hp.kurtosis wt.n wt.mean wt.stdev 1 0 19 17.14737 3.833966 0.01395038 -0.8031783 19 160.2632 53.90820 -0.01422519 -1.2096973 19 3.768895 0.7774001 2 1 13 24.39231 6.166504 0.05256118 -1.4553520 13 126.8462 84.06232 1.35988586 0.5634635 13 2.411000 0.6169816 wt.skew wt.kurtosis 1 0.9759294 0.1415676 2 0.2103128 -1.1737358