일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- 지리지
- 태그를 입력해 주세요.
- 기자조선
- ANOVA
- repeated measures ANOVA
- 풍백
- 한서지리지
- spss
- 낙랑군
- 선형회귀분석
- 단군
- 통계학
- 독사방여기요
- post hoc test
- Histogram
- 유주
- 통계
- t test
- 한서
- 고구려
- 우분투
- 신라
- categorical variable
- 후한서
- 히스토그램
- 패수
- 기자
- 창평
- linear regression
- R
- Today
- Total
獨斷論
통계 R 사용설명서 15 - 헷갈리는 apply, lapply, sapply, tapply 요약정리 본문
행렬의 열방향이나 행방향으로 어떤 함수를 적용하여 그 결과를 보고싶은 경우가 있다.
쉬운 예로 행렬에서 각 행의 평균을 구한다거나 각 열의 평균을 구하고 싶은 때에 apply()라는 함수를 이용한다.
apply( )로 각 행과 열의 평균 구해보기
우선 예제에서 사용하고자 하는 행렬을 만들어보자.
1 2 3 4 5 6 7 |
> x <- matrix(1:20, nrow=4) |
이 행렬에서 행방향으로 평균을 구하고자 한다면 아래와 같이 한다.
1 2 3 |
> mean_row <- apply(x, 1, mean) |
9는 (1+5+9+13+17)/5의 값이다. 나머지도 만찬가지.
열방향으로 평균을 구할땐 1을 2로 바꾸면 된다.
1 2 3 |
> mean_col <- apply(x, 2, mean) |
2.5는 (1+2+3+4)/4이다.
이는 변수 x가 행렬이 아니라 데이터프레임일때도 똑같이 적용된다.
lapply( )로 평균 구하기
lapply는 apply를 list에 적용하게 하는 함수이다.
위 행렬과 똑같이 1~4는 x.list라는 리스트변수의 a에 넣고, 5~8은 b에 넣고, 9~12는 c에 넣고 13~16은 d에 넣고 17~20은 e에 넣어보자.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
> x.list <- list(a = 1:4, b = 5:8, c = 9:12, d = 13:16, e = 17:20) |
이제 lapply( )를 이용하여 x.list의 각 변수마다 평균을 구하여보면
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
> results.list <- lapply(x.list, mean) |
위와 같다.
lapply()를 적용하여 리스트 변수의 평균을 구하였을때 그 결과도 리스트임을 보여주고 있다.
sapply( )로 평균 구하기
만약 리스트변수의 평균을 구하여 그 결과를 그냥 벡터변수에 넣고 싶다면 sapply()를 이용하면 된다.
1 2 3 4 5 6 |
> results <- sapply(x.list, mean) |
위 스크립트에서 변수 results는 리스트가 아니고 벡터임을 보여준다.
tapply( )로 평균 구하기
tapply는 변수값이 범주형변수로 분류되어있을때 범주형변수의 각 그룹마다 평균을 구하고자 할때 사용된다.
만약 1~20까지의 숫자가 1~4까지는 a라는 범주형변수 값에 해당되고, 5~8은 b, 9~12는 c, 13~16은 d, 17~20은 e에 해당된다고 가정하자.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
> x <- 1:20 |
이제 a 그룹은 a 그룹데로 평균을 구하고, b그룹은 b그룹데로 평균을 구하고자 한다면 tapply를 이용하면 된다.
1 2 3 4 5 6 |
> results <- tapply(x.df$x, x.df$grouping, mean) |