반응형
apply 함수는 벡터,행렬,배열에 원하는 함수를 원하는 방향으로 적용해줍니다. 예를들어봅시다.
아래와 같은 데이터가 있습니다. 어떤 반의 인원이 다섯명이고, 다섯사람이 세과목의 시험을 본 결과 데이터입니다.
> Math=c(94,82,45,55,67)
> English=c(88,86,56,90,50)
> Science=c(87,76,65,43,55)
데이터프레임에 넣었습니다.
> DF1=data.frame(Math,English,Science)
> DF1
Math English Science
1 94 88 87
2 82 86 76
3 45 56 65
4 55 90 43
5 67 50 55
apply 함수를 적용해봅시다. apply함수는 아래와 같은 형식으로 입력합니다.
apply(데이터, 방향, 함수)
방향은 행방향이 1, 열방향이 2입니다.
먼저 과목별 평균을 구해봅시다. 열(column)방향으로 평균을 내야합니다. 결과는 벡터로 출력됩니다.
> mean_each_subject=apply(DF1,2,mean)
> mean_each_subject
Math English Science
68.6 74.0 65.2
이번에는 사람별 세과목 평균을 구해봅시다.
> mean_each_student=apply(DF1,1,mean)
> mean_each_student
[1] 89.66667 81.33333 55.33333 62.66667 57.33333
만약 열이나 행방향으로 적용되는 함수가 아니라 개별적으로 적용되는 함수는 어떻게 될까요??
먼저 각 원소를 제곱하는 함수를 행방향으로 적용해보았습니다. 결과는 행렬로 출력됩니다. 원래의 데이터프레임에서 행과 열이 바뀌어 출력됩니다.
> square_score=apply(DF1,1,function(x))
> square_score
[,1] [,2] [,3] [,4] [,5]
Math 8836 6724 2025 3025 4489
English 7744 7396 3136 8100 2500
Science 7569 5776 4225 1849 3025
이번에는 각 원소를 제곱하는 함수를 열방향으로 적용해보았습니다. 결과는 행렬로 출력됩니다.
> square_score=apply(DF1,2,function(x))
> square_score
Math English Science
[1,] 8836 7744 7569
[2,] 6724 7396 5776
[3,] 2025 3136 4225
[4,] 3025 8100 1849
[5,] 4489 2500 3025
> class(square_score)
[1] "matrix"
반응형
'R 주제 > 통게분석(임시)' 카테고리의 다른 글
[R강의] 134. 여러 점들 사이의 코사인 거리 한번에 구하는 법 (dist함수) (2) | 2022.02.19 |
---|---|
R의 lapply 함수(리스트에 원하는 함수를 원하는 방향으로 적용) (0) | 2021.03.18 |
R에서 날짜 데이터의 연산하기 (0) | 2021.03.18 |
R에서 날짜데이터 입력하기 (as.Date) (0) | 2021.03.18 |
R에서 시간데이터로 산점도 그리기 (0) | 2021.03.18 |
댓글