2022 스터디/영어 스터디[2022]

[1] Compute Summary Statistics of Data Subsets

EYR 2022. 4. 1. 22:36
R: 데이터 부분 집합의 간략한 통계 계산
aggregate {stats}R 문서

데이터 부분 집합의 간략한 통계 계산

설명

데이터를 부분 집합으로 나누고, 각각 간략한 통계 계산을 거쳐 접근성 좋은 형태로 결과를 반환한다.

사용법

aggregate(x, ...)

## Default S3 method:
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

nfrequency가 원본 주기의 부 주기인지를 결정하기 위해 사용되는 공차.

...

방식에 따라 사용되거나 사용하지 않는 추가 인수.

자세히

aggregate 는 데이터 프레임과 시계열 방식을 사용하는 일반적인 함수이다.

aggregate.default는 기본적으로 x가 시계열 형식이면 시계열 방식을 사용하고, 그렇지 않으면 x를 데이터 프레임으로 암시적 변환하고 데이터 프레임 방식을 호출한다.

aggregate.data.frame 은 데이터 프레임 방식이다. x가 데이터 프레임이 아니면, 행에 0이 아닌 숫자가 있는 형태로 암시적 변환된다. 그리고 x에 있는 각각의 변수(열)들은 by의 구성요소와 동일한 조합의 부분집합으로 쪼개진다(행). 그리고 FUN이 각 부분조합에 적용되며 …에 추가 인수가 전달된다. 결과는 by와 x의 변수를 포함하고 있는 데이터 프레임으로 재포맷된다. by에서 발생된 건 부분집합을 결정하는데 사용되는 그룹화된 값의 특정한 조합을 포함한다. 그리고 x에서 발생된 건 해당하는 x각각의 변수 부분집합에 대한 요약이다. 만약 simplify가 참이라면, 요약들은 그들이 각각 하나 이상의 충분한 길이를 가지고 있을 때 벡터나 행렬로 간소화된다. 그렇지 않으면 부분집합에 따른 요약 결과의 리스트가 포함된다. by 변수들 중 결측치를 가지고 있는 행은 결과에서 누락될 것이다.(R 2.11.0버전은 FUN이 스칼라 함수임을 요구한다는 것에 주의.)

aggregate.formula 는 aggregate.data.frame로 접속되어지는 표준 식이다.

aggregate.ts 는 시계열 방식이며 FUN이 스칼라 함수일 것을 요구한다. 만약 x가 시계열 방식이 아니면, 암시적 변환된다. 그 뒤 x의 변수들은 길이 frequency(x) / nfrequency 에 적절한 크기로 쪼개진다. 그리고 FUN은 각각의 조각에 적용되며 추가적으로 이름붙인 인수 … 에 전달된다. 결과는 시계열과 집계된 값의 빈도 nfrequency를 반환한다. 이것은 원본 배열이 1년 혹은 계절별 기록 이라면 분기벌 혹은 연도별 결과에 대해 가장 정확하다. 특히 월별 배열을 2월부터 분기별로 집계하면 기존의 분기 배열을 얻을 수 없다.

FUN은 match.fun으로 전달된다 그리고 이런 이유로 FUN은 함수나 기호, 함수의 문자열 이름이 될 수 있다.

시계열 방식에서 시계열은 클래스 “ts” 또는 클래스 c(“mts”,”ts”)이다.

데이터 프레임 방식에서 by 안의 그룹화된 변수에 해당되는 열과 데이터 프레임은 x에서 집셰된 열을 따른다. 만약 by에 이름이 있으면, 비어있지 않은 시간들은 이름 지어지지 않은 그룹화된 변수 결과의 열 Group.i를 by[[i]]로 이름 붙이는 데 사용된다.

서술자(s)

Kurt Hornik, Arni Magnusson 지원.

참조

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

같이 보기

apply, lapply, tapply

예시

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

이거 그겁니다 R에서 help(aggregate)하면 나오는거