티스토리 뷰

반응형

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

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



데이터 

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

specdata.zip


압축을 풀면 332개의 CSV 파일이 specdata 폴더에 존재한다. 

미국의 332개 지역의 공기 오염 상태를 모니터링하는 데이터로서, 각각의 파일에 모니터링 지역의 ID 값을 가지고 있고 그 ID 값으로 파일 이름을 사용하고 있다. 

각 파일의 내부에 포함된 내용은 다음과 같다. 

  • Date: the date of the observation in YYYY-MM-DD format (year-month-day)
  • sulfate: the level of sulfate PM in the air on that date (measured in micrograms per cubic meter)
  • nitrate: the level of nitrate PM in the air on that date (measured in micrograms per cubic meter)

  • 문제 - 오염된 평균 값 계산하기

    첫번째 문제는 지정된 지역의 데이터 셋을 파일에서 읽어들여서, 오염값 (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 설치와 활용

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

    R 데이터 구조에 대한 정리

    R 패키지 설치하기

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

    R 데이터셋 정렬하기~

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

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

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

    R의 split 활용

    R의 함수 작성 및 활용~

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

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

    R 디버깅 툴 활용하기~


    반응형
    댓글
    반응형
    공지사항
    최근에 올라온 글
    최근에 달린 댓글
    Total
    Today
    Yesterday
    «   2024/04   »
    1 2 3 4 5 6
    7 8 9 10 11 12 13
    14 15 16 17 18 19 20
    21 22 23 24 25 26 27
    28 29 30
    글 보관함