티스토리 뷰
존스 홉킨스 대학의 로저 펜(Roger, D. Peng) 교수의 R 프로그래밍 강좌의 프로그래밍 테스트를 한글로 옮겨본다.
R 프로그래밍을 배우는 사람들은 한번씩 테스트 해보기 바란다.
데이터
본 예제에서 사용하는 데이터를 다음 링크에서 다운로드 한다.
압축을 풀면 332개의 CSV 파일이 specdata 폴더에 존재한다.
미국의 332개 지역의 공기 오염 상태를 모니터링하는 데이터로서, 각각의 파일에 모니터링 지역의 ID 값을 가지고 있고 그 ID 값으로 파일 이름을 사용하고 있다.
각 파일의 내부에 포함된 내용은 다음과 같다.
문제 - 오염된 평균 값 계산하기
첫번째 문제는 지정된 지역의 데이터 셋을 파일에서 읽어들여서, 오염값 (sulfate or nitrate)의 평균을 계산하는 pollutantmean 함수를 만드는 것이다.
pollutant 함수는 "directory", "pollutant", "id"라는 세 개의 인수를 가지고 있다.
"directory"에 지정된 폴더에서 "id"에 해당하는 파일들을 읽고, "pollutant"에 해당하는 값들의 평균을 구하면 된다.
물론 해당 값이 NA 일 경우에는 제외하고 평균을 구하면 된다.
함수의 프로토타입은 다음과 같다.
pollutantmean <- function(directory, pollutant, id = 1:332) { ## 'directory'는 CSV 파일의 위치를 나타내는 길이가 1인 문자열 벡터 ## 'pollutant'는 길이가 1인 문자열 벡터로서 오염된 항목의 이름을 나타냄 ## 해당 항목의 평균을 구하는 것으로 "sulfate"나 "nitrate" 중 하나의 값을 가짐 ## 'id'는 평균 계산에 사용할 모니터링 아이디 값을 나타내는 정수형 벡터 ## 'id' 벡터의 모니터링 리스트에 있는 모든 오염된 값의 평균을 리턴 ## 단, NA 값은 무시 ## NOTE: 결과 값을 반올림 하지 말기 바람 }
위 파일을 pollutatnmean.R 로 저장하고 다음의 결과와 동일하게 나오면 된다.
source("pollutantmean.R")
pollutantmean("specdata", "sulfate", 1:10)
## [1] 4.064
pollutantmean("specdata", "nitrate", 70:72)
## [1] 1.706
pollutantmean("specdata", "nitrate", 23)
## [1] 1.281
스스로 프로그래밍을 하고 결과를 확인해 보기 바란다.
댓글로 질문은 자유롭게 올려주시고, 다른 사람들을 위해서 정답은 올리지 말자~~
미니의 R 주요 강좌...
R의 lapply, sapply, vapply를 이해하자~
'Cloud&BigData > R' 카테고리의 다른 글
[R 퀴즈#3] R 프로그래밍 테스트 - Air Pollution 파트 3 (1) | 2015.09.25 |
---|---|
[R 퀴즈#2] R 프로그래밍 테스트 - Air Pollution 파트 2 (1) | 2015.09.23 |
R 학습도구 Swirl~ (0) | 2015.09.14 |
R 데이터셋의 일부 데이터 가져오기 (0) | 2015.09.07 |
R 데이터셋 정렬하기~ (0) | 2015.08.27 |