stats包—aggregate函数

本文详细介绍了R语言中的aggregate函数,用于按指定条件对数据进行分组并计算汇总统计信息。示例包括如何计算数据框和时间序列的平均值、分组条件的设定以及处理缺失值的方法。此外,还展示了如何使用公式接口和时间序列方法来操作数据。通过这些例子,读者可以更好地理解和应用aggregate函数进行数据处理。
摘要由CSDN通过智能技术生成

描述

将数据划分为多个子集,为每个子集计算汇总统计信息,并以方便的形式返回结果。

用法

aggregate(x, ...)

## 默认S3方法:

aggregate(x, ...)

##类型为数据框(data.frame)的S3方法:

aggregate(x, by, FUN, ..., simplify = TRUE, drop = TRUE)

##类型为公式(formula)的S3方法:

aggregate(formula, data, FUN, ..., subset, na.action = na.omit)

##类型为时间序列(ts)的S3方法:

aggregate(x, nfrequency = 1, FUN = sum, ndeltat = 1, ts.eps = getOption("ts.eps"), ...)

参数

x:一个R对象

by:一个分组元素的列表,每个元素只要在数据框x中的变量。元素在使用之前被强制为因子。

FUN:计算可应用于所有数据子集的汇总统计信息的函数。

simplify:一种指示结果是否应尽可能简化为向量或矩阵的逻辑。

drop:指示是否删除未使用的分组值组合的逻辑。
非默认的大小写drop=FALSE已经在R 3.5.0中修改为删除未使用的组合。

formula:一种公式,如y ~ x或cbind(y1, y2) ~ x1 + x2,其中y变量是要根据x变量(通常是因数)分组的数字数据。

data:一种数据框(或列表),公式中的变量应从中选取。

subset:一个可选的向量,指定要使用的观察值的子集。

na.action:一个函数,指示当数据包含NA值时应该发生什么。默认是忽略给定变量中缺失的值。

nfrequency:每单位时间的新观测数;一定是x频率的除数。

ndeltat:连续观测之间抽样周期的新分数;一定是x的抽样区间的除数。

ts.eps:连续观测之间抽样周期的新分数;必须是x. ts.eps公差的采样间隔的除数,用于决定nfrequency是否为原始频率的子倍数。

...:传递给方法或由方法使用的进一步参数。

细节

Aggregate是一个泛型函数,具有用于数据框和时间序列的方法。

如果x是时间序列,则默认方法aggregate.default使用时间序列方法,否则将x强制到数据框并调用数据框方法。

Aggregate.data.frame是数据框方法。如果x不是一个数据框,它被强制为1,这必须有一个非零的行数。然后,x中的每个变量(列)被分解为by的相同组合的情况(行)的子集,FUN应用于每个这样的子集,并在…传递给它。结果重新格式化为一个数据框中包含变量和x。因的包含分组的独特组合值用于确定子集,并因x的相应的总结各自变量的子集的x。如果简化是真的,如果摘要的公共长度分别为1或大于1,则将其简化为向量或矩阵;否则,将得到按子集排列的汇总结果列表。任何by变量中缺少值的行将从结果中省略。(注意,2.11.0之前的R版本要求FUN是一个标量函数。)

aggregate.formula是一个用于aggregate.data.frame的标准公式接口。

aggregate.ts是时间序列方法,并要求FUN是一个标量函数。

如果x不是时间序列,它被强制为1。然后,x中的变量被分割成长度为frequency(x) / nfrequency的适当块,FUN被应用到每个这样的块中,进一步(命名)参数在…传递给它。返回的结果是一个时间序列,其频率nfrequency包含聚合的值。需要注意的是,当原始序列涵盖了整个季度或年份时,这对于季度或年度结果是最合理的:特别是将一个月度序列从2月份开始汇总到多个季度,并不会得出传统的季度序列。

FUN传递给match.fun,因此它可以是一个函数或符号或字符串命名一个函数。

对于时间序列法,类“ts”或类c(“mts”,“ts”)的时间序列。

对于数据框方法,一个数据框,其列对应于by中的分组变量,然后是x中的聚合列。如果by有名称,则使用非空时间标记结果中的列,将未命名的分组变量命名为Group.i对于by[[i]]。

例子

## Compute the averages for the variables in 'state.x77', grouped
## according to the region (Northeast, South, North Central, West) that
## each state belongs to.
aggregate(state.x77, list(Region = state.region), mean)

## Compute the averages according to region and the occurrence of more
## than 130 days of frost.
aggregate(state.x77,
          list(Region = state.region,
               Cold = state.x77[,"Frost"] > 130),
          mean)
## (Note that no state in 'South' is THAT cold.)


## example with character variables and NAs
testDF <- data.frame(v1 = c(1,3,5,7,8,3,5,NA,4,5,7,9),
                     v2 = c(11,33,55,77,88,33,55,NA,44,55,77,99) )
by1 <- c("red", "blue", 1, 2, NA, "big", 1, 2, "red", 1, NA, 12)
by2 <- c("wet", "dry", 99, 95, NA, "damp", 95, 99, "red", 99, NA, NA)
aggregate(x = testDF, by = list(by1, by2), FUN = "mean")

# and if you want to treat NAs as a group
fby1 <- factor(by1, exclude = "")
fby2 <- factor(by2, exclude = "")
aggregate(x = testDF, by = list(fby1, fby2), FUN = "mean")


## Formulas, one ~ one, one ~ many, many ~ one, and many ~ many:
aggregate(weight ~ feed, data = chickwts, mean)
aggregate(breaks ~ wool + tension, data = warpbreaks, mean)
aggregate(cbind(Ozone, Temp) ~ Month, data = airquality, mean)
aggregate(cbind(ncases, ncontrols) ~ alcgp + tobgp, data = esoph, sum)

## Dot notation:
aggregate(. ~ Species, data = iris, mean)
aggregate(len ~ ., data = ToothGrowth, mean)

## Often followed by xtabs():
ag <- aggregate(len ~ ., data = ToothGrowth, mean)
xtabs(len ~ ., data = ag)


## Compute the average annual approval ratings for American presidents.
aggregate(presidents, nfrequency = 1, FUN = mean)
## Give the summer less weight.
aggregate(presidents, nfrequency = 1,
          FUN = weighted.mean, w = c(1, 1, 0.5, 1))


aggregate(station1$discharge, by = list(station1$yearmon),mean) 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值