當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。