'R 프로그래밍'에 해당되는 글 3건

  1. 2015.09.25 [R 퀴즈#3] R 프로그래밍 테스트 - Air Pollution 파트 3 (1)
  2. 2015.09.23 [R 퀴즈#2] R 프로그래밍 테스트 - Air Pollution 파트 2 (1)
  3. 2015.09.21 [R 퀴즈#1] R 프로그래밍 테스트 - Air Pollution 파트 1 (1)

[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

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

|



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

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


데이터

데이터는 다음 링크에서 다운로드 하면 된다. 

invalid-file


문제 - 오염된 값을 모두 측정한 경우의 수 계산

지정된 디렉토리의 파일들을 읽어서, 각 파일 내에 "sulfate"와 "nitrait"값이 모두 측정된 경우의 수를 계산하는 함수를 작성한다. 

함수의 결과값으로 반드시 데이터 프레임을 리턴하도록 한다. 

첫번째 칼럼은 파일 이름, 즉 모니터링 아이디(ID) 값으로 하고, 두번째 칼럼은 오염된 값을 모두 측정한 수로 한다. 

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

complete <- function(directory, id = 1:332) { ## 'directory'는 CSV 파일의 위치를 나타내는 길이가 1인 문자열 벡터 ## 'id'는 계산에 사용할 모니터링 아이디 값을 나타내는 정수형 벡터 ## 결과값으로 리턴할 데이터프레임의 형식: ## id nobs ## 1 117 ## 2 1041 ## ... ## 'id'는 모니터링 아이디, 'nobs'는 오염 값을 모두 측정한 경우의 수 }


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

source("complete.R")
complete("specdata", 1)
##   id nobs
## 1  1  117
complete("specdata", c(2, 4, 8, 10, 12))
##   id nobs
## 1  2 1041
## 2  4  474
## 3  8  192
## 4 10  148
## 5 12   96
complete("specdata", 30:25)
##   id nobs
## 1 30  932
## 2 29  711
## 3 28  475
## 4 27  338
## 5 26  586
## 6 25  463
complete("specdata", 3)
##   id nobs
## 1  3  243


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

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



미니의 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

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

|



존스 홉킨스 대학의 로저 펜(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 디버깅 툴 활용하기~





    Trackback 0 And Comment 1
    prev | 1 | next