Programing/R- programming

데이터 추출 및 병합 연산 R프로그래밍

sosal 2014. 8. 21. 11:59
반응형

/*

 http://sosal.kr/
 * made by so_Sal
 */



실습데이터)

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



> 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



1. subset (부분집합)


patients 변수에서 몸무게가 60키로 이상히고, 성별이 남자인 경우를 추출하는 경우


- 조건문을 사용하는 경우

> patients[ (patients$weight > 60 & patients$gender=='M'), ]

  weight height gender   testDate

1   65.4    170      M 2013-09-01

3  380.0     NA      M 2013-09-05

4   72.2    173      M 2013-09-14

# 조건문을 사용할 경우 결측치에 대한 데이터를 다루기 어렵다.


- subset 함수를 사용하는 경우

> subset(patients, weight>60 & gender == 'M', select = c('weight', 'height'))

  weight height

1   65.4    170

3  380.0     NA

4   72.2    173




2. transform

patients의 weight의 단위를 kg에서 pounds로 바꿔 weight_pounds 변수를 추가하기


> transform( patients, weight_pounds = 2.2*weight )

  weight height gender   testDate weight_pounds

1   65.4    170      M 2013-09-01        143.88

2   55.0    155      F 2013-09-01        121.00

3  380.0     NA      M 2013-09-05        836.00

4   72.2    173      M 2013-09-14        158.84

5   51.0    161      F 2013-10-11        112.20

6     NA    166      F 2013-10-26            NA


물론 cbind 함수를 이용하여 같은 행동을 할 수 있다.

> cbind(patients, data.frame(weight_pounds = 2.2 * patients$weight))

  weight height gender   testDate weight_pounds

1   65.4    170      M 2013-09-01        143.88

2   55.0    155      F 2013-09-01        121.00

3  380.0     NA      M 2013-09-05        836.00

4   72.2    173      M 2013-09-14        158.84

5   51.0    161      F 2013-10-11        112.20

6     NA    166      F 2013-10-26            NA


3. aggregate, table

2개 이상의 factor를 group화 하여 함수를 적용하는 경우에 사용하는 함수.

aggregate( data, by=list( factor1, factor2 ... ), function )


2개의 factor간에 2x2 contingency table을 구성하고 싶은 경우 table 함수를 이용한다.

table( data$factor1, data$factor2)