R apply 함수 Start.

BioinformaticsAndMe




# R apply() Function

- apply() : 데이터프레임 또는 매트릭스에 함수를 적용하여 행 또는 열 단위의 계산 수행.



apply( X, MARGIN, FUN)

- X : matrix

- MARGIN : 1(row) , 2(col)

- FUN : row/column 단위로 적용할 함수. 사용자가 만든 함수도 가능함.


EX1) apply(X, 1, sum)

EX2) apply(X, 2, sd)





# apply() 함수는 벡터, 행렬 등의 데이터 프레임에서 row/column 단위의 계산을 할 때 함수를 쉽게 적용할 수 있도록 도와준다.
# 실습데이터
> weight <- c(65.4, 55, 380, 72.2, 51, NA)
> height <- c(170, 155, NA, 173, 161, 166)
> gender <- c("M", "F","M","M","F","F")
> testDate <- c("2013/09/01", "2013/09/01", "2013/09/05", "2013/09/14", "2013/10/11", "2013/10/26")
> patients <- data.frame( weight = weight, height=height, gender=gender, testDate=testDate)


# weight, height만 추출
> patients.sub <- patients[ ,c("weight","height")]
> patients.sub
  weight height
1   65.4    170
2   55.0    155
3  380.0     NA
4   72.2    173
5   51.0    161
6     NA    166
 

# 각 환자(row)별로 몸무게와 키의 평균을 구한다
> apply(patients.sub, 1, mean)
[1] 117.7 105.0    NA 122.6 106.0    NA
 
# NA(결측치)는 빼고 계산한다
> apply(patients.sub, 1, mean, na.rm=TRUE)
[1] 117.7 105.0 380.0 122.6 106.0 166.0


# 각 특성(Column)별로 평균을 구한다

> apply(patients.sub, 2, mean, na.rm=TRUE)

weight height

124.72 165.00


# 각 셀에 2를 곱해준다

MulTwo <- function(x){ return(2*x) }

> apply(patients.sub, c(1,2), MulTwo)

     weight height

[1,]  130.8    340

[2,]  110.0    310

[3,]  760.0     NA

[4,]  144.4    346




#다양한 apply 함수군이 존재한다.

lapply: 결과를 리스트 형태로 반환

sapply: 벡터, 또는 행렬의 형태로 반환 (s: simplify)

tapply: 입력값을 index에 지정한 factor 값으로 분류(그룹화)하여 매개변수로 넘어온 function을 적용하는 함수다.



# lapply

> lapply( patients.sub, mean, na.rm = TRUE )
$weight
[1] 124.72
$height
[1] 165

# sapply
> sapply( patients.sub, mean, na.rm = TRUE )
weight height 
124.72 165.00 
 
# tapply
> patients$gender # categorical data
[1] M F M M F F
Levels: F M

> tapply(patients$weight, patients$gender, mean, na.rm=TRUE)
       F        M 
 53.0000 172.5333 




R apply 함수 End.

BioinformaticsAndMe

'R' 카테고리의 다른 글

R plot (그래픽스)  (0) 2018.08.27
R 회귀분석 (R regression test)  (0) 2018.08.19
R 상관분석 (R correlation test)  (0) 2018.08.10
막대그래프 (Barplot)  (0) 2018.08.06
R, 결측치 처리 (Missing value, NA)  (0) 2018.07.26

+ Recent posts