18.4 tapply()
함수
tapply()
함수는 벡터의 하위 집합에 함수를 적용하는 데 사용됩니다. 주로 다음과 같은 상황에서 사용됩니다.
- (범주형 변수 즉, 일명 요인을 통해) 그룹으로 나누어 질 수있는 데이터 세트의 경우입니다.
- 데이터 세트를 그룹으로 나누고 싶은 경우 입니다.
- 각 그룹 내에서 함수를 적용하고 싶습니다.
tapply()
함수의 형식은 다음과 같습니다.
tapply(X, INDEX, FUN = NULL, ..., default = NA, simplify = TRUE)
x
: 벡터입니다.INDEX
: 요인 또는 요인의 리스트(또는 강제 변환된 요인)입니다.FUN
: 적용할 함수입니다....
:FUN
에 전달될 다른 인수가 포함되어 있습니다.simplify
: 결과의 단순화 여부를 설정합니다.
R에 내장된 mtcars
데이터 세트를 사용하고 cyl
변수로 그룹화된 mpg
변수의 평균을 계산하는 것을 예로 들어 보겠습니다.
# mtcars 데이터 세트의 앞의 6개 행을 확인합니다.
head(mtcars)
## mpg cyl disp hp drat wt qsec vs am gear carb
## Mazda RX4 21.0 6 160 110 3.90 2.620 16.46 0 1 4 4
## Mazda RX4 Wag 21.0 6 160 110 3.90 2.875 17.02 0 1 4 4
## Datsun 710 22.8 4 108 93 3.85 2.320 18.61 1 1 4 1
## Hornet 4 Drive 21.4 6 258 110 3.08 3.215 19.44 1 0 3 1
## Hornet Sportabout 18.7 8 360 175 3.15 3.440 17.02 0 0 3 2
## Valiant 18.1 6 225 105 2.76 3.460 20.22 1 0 3 1
# cylinders를 그룹화하여 mpg 컬럼의 평균을 구합니다.
tapply(mtcars$mpg, mtcars$cyl, mean)
## 4 6 8
## 26.66364 19.74286 15.10000
이제 cylinder
범주형 변수로 그룹화된 mtcars
데이터 세트의 각 열에 대한 평균을 계산해 보겠습니다. 이를 위해 apply
함수 내에 tapply
함수를 포함할 수 있습니다.
# cylinders를 그룹화하여 모든 컬럼의 평균을 구합니다.
apply(mtcars, 2, function(x) tapply(x, mtcars$cyl, mean))
## mpg cyl disp hp drat wt qsec vs
## 4 26.66364 4 105.1364 82.63636 4.070909 2.285727 19.13727 0.9090909
## 6 19.74286 6 183.3143 122.28571 3.585714 3.117143 17.97714 0.5714286
## 8 15.10000 8 353.1000 209.21429 3.229286 3.999214 16.77214 0.0000000
## am gear carb
## 4 0.7272727 4.090909 1.545455
## 6 0.4285714 3.857143 3.428571
## 8 0.1428571 3.285714 3.500000