当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


R aggregate 计算数据子集的汇总统计


R语言 aggregate 位于 stats 包(package)。

说明

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

用法

aggregate(x, ...)

## Default S3 method:
aggregate(x, ...)

## S3 method for class 'data.frame'
aggregate(x, by, FUN, ..., simplify = TRUE, drop = TRUE)

## S3 method for class 'formula'
aggregate(x, data, FUN, ...,
          subset, na.action = na.omit)

## S3 method for class 'ts'
aggregate(x, nfrequency = 1, FUN = sum, ndeltat = 1,
          ts.eps = getOption("ts.eps"), ...)

参数

x

一个R目的。为了formula方法一formula, 如y ~ x或者cbind(y1, y2) ~ x1 + x2, 其中y变量是根据分组被分成组的数值数据x变量(通常是因子)。

by

分组元素列表,每个元素只要数据帧 x 中的变量或公式即可。这些元素在使用前会被强制转换为因子。

FUN

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

simplify

一个逻辑,指示如果可能的话是否应将结果简化为向量或矩阵。

drop

指示是否删除未使用的分组值组合的逻辑。非默认情况drop=FALSE已修改为R3.5.0 删除未使用的组合。

data

应从中获取公式中变量的 DataFrame (或列表)。

subset

一个可选向量,指定要使用的观测子集。

na.action

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

nfrequency

每单位时间的新观测数量;必须是 x 频率的除数。

ndeltat

连续观测之间采样周期的新部分;必须是 x 采样间隔的除数。

ts.eps

用于确定nfrequency是否是原始频率的sub-multiple的容差。

...

传递给方法或由方法使用的更多参数。

细节

aggregate 是一个通用函数,具有数据帧和时间序列的方法。

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

aggregate.data.frame是 DataFrame 方法。如果x不是数据帧,它被强制为一,其行数必须非零。然后,每个变量(列)x被分成相同组件组合的案例(行)子集by, 和FUN应用于每个这样的子集,并带有进一步的参数...传递给它。结果被重新格式化为包含变量的 DataFrame byx。那些产生于by包含用于确定子集的分组值的唯一组合,以及由x中各个变量子集的相应摘要x.如果simplify为 true,如果摘要的公共长度分别为 1 或大于 1,则摘要会被简化为向量或矩阵;否则,获得根据子集的汇总结果列表。任意行中含有缺失值的行by变量将从结果中省略。 (请注意,版本R2.11.0 之前需要FUN是一个标量函数。)

公式方法为 aggregate.data.frame 提供了标准公式接口。如果 by 是公式,则后者调用公式方法,在这种情况下,aggregate(x, by, FUN) 与数据帧 xaggregate(by, x, FUN) 相同。

aggregate.ts 是时间序列方法,并且要求FUN 是标量函数。如果 x 不是时间序列,则将其强制为时间序列。然后,x 中的变量被拆分为长度为 frequency(x) / nfrequency 的适当块,并将 FUN 应用于每个这样的块,并将 ... 中的其他(命名)参数传递给它。返回的结果是频率为 nfrequency 的时间序列,其中包含聚合值。请注意,当原始系列涵盖整个季度或年份时,这对于季度或年度结果最有意义:特别是,将每月系列汇总到从二月开始的季度不会给出传统的季度系列。

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

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

对于 DataFrame 方法, DataFrame 的列对应于 by 中的分组变量,后跟 x 中的聚合列。如果 by 有名称,则非空时间用于标记结果中的列,未命名的分组变量被命名为 Group.i for by[[i]]

警告

第一个论点"formula"方法被命名为formula而不是x之前R4.2.0。可移植用途不应命名该参数。

例子

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

## Formula interface via 'by' (for pipe operations)
ToothGrowth |> aggregate(len ~ ., FUN = mean)

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

作者

Kurt Hornik, with contributions by Arni Magnusson.

参考

Becker, R. A., Chambers, J. M. and Wilks, A. R. (1988) The New S Language. Wadsworth & Brooks/Cole.

也可以看看

applylapplytapply

相关用法


注:本文由纯净天空筛选整理自R-devel大神的英文原创作品 Compute Summary Statistics of Data Subsets。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。