[R 퀴즈#3] R 프로그래밍 테스트 - Air Pollution 파트 3

|



존스 홉킨스 대학의 로저 펜(Roger, D. Peng) 교수의 R 프로그래밍 강좌의 프로그래밍 테스트를 한글로 옮겨본다. 

R 프로그래밍을 배우는 사람들은 한번씩 테스트 해보기 바란다. 



데이터 

본 예제에서 사용하는 데이터를 다음 링크에서 다운로드 한다.

invalid-file


문제 - 오염된 값 사이의 상관관계 계산하기

마지막으로 지정된 파일을 읽어서 오염된 값 sulfate와 nitrate의 상관관계를 계산하는 함수를 만들어 보자. 

단, 각 파일(모니터링 아이디)별로 sulfate와 nitrate의 값이 모두 존재하는 경우의 수가 매개변수로 지정된 임계치(threshold)보다 큰 값만 대상으로 한다.  

결과값으로 임계치(threshold) 조건을 만족하는 모니터링 아이디의 상관관계 값의 벡터를 리턴한다. 

만약 모든 모니터링 아이디가 임계치 조건을 만족하지 못한다면, 길이가 0인 숫자 벡터를 리턴하면 된다. 

함수의 프로토타입은 다음과 같다. 

corr <- function(directory, threshold = 0) { ## 'directory'는 CSV 파일의 위치를 나타내는 길이가 1인 문자열 벡터 ## 'threshold'는 길이가 1인 숫자형 벡터로서 모니터링 아이디별로 ## sulfate와 nitrate의 값이 모두 존재하는 경우의 수를 계산할 임계치 ## 기본값은 0 ## 결과값으로 상관계수 값의 숫자형 벡터를 리턴 ## NOTE: 결과 값을 반올림하지 말자. }


위에서 상관관계를 계산하기 위해 R에서 제공하는 cor() 함수를 사용할 필요가 있다. 

"?cor"로 도움말을 살펴보기 바란다. 

위 파일을 corr.R 로 저장하고 다음의 결과와 동일하게 나오면 된다. 

source("corr.R")
source("complete.R")
cr <- corr("specdata", 150)
head(cr)
## [1] -0.01896 -0.14051 -0.04390 -0.06816 -0.12351 -0.07589
summary(cr)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
## -0.2110 -0.0500  0.0946  0.1250  0.2680  0.7630
cr <- corr("specdata", 400)
head(cr)
## [1] -0.01896 -0.04390 -0.06816 -0.07589  0.76313 -0.15783
summary(cr)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
## -0.1760 -0.0311  0.1000  0.1400  0.2680  0.7630
cr <- corr("specdata", 5000)
summary(cr)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
## 
length(cr)
## [1] 0
cr <- corr("specdata")
summary(cr)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
## -1.0000 -0.0528  0.1070  0.1370  0.2780  1.0000
length(cr)
## [1] 323


스스로 프로그래밍을 하고 결과를 확인해 보기 바란다. 

댓글로 질문은 자유롭게 올려주시고, 다른 사람들을 위해서 정답은 올리지 말자~~


미니의 R 주요 강좌...

데이터 통계 분석을 위한 R 설치와 활용

R 실행을 위한 기본적인 내용들~

R 데이터 구조에 대한 정리

R 패키지 설치하기

R 데이터셋 처리 함수들에 대한 간단한 정리~

R 데이터셋 정렬하기~

R 데이터셋의 일부 데이터 가져오기

R의 lapply, sapply, vapply를 이해하자~

R의 apply, tapply의 활용법을 알아보자~

R의 split 활용

R의 함수 작성 및 활용~

R 시뮬레이션 - 랜덤 변수 샘플링

R 함수에서 캐시 활용하기~

R 디버깅 툴 활용하기~


신고



Trackback 0 And Comment 1