科学の箱

科学・IT・登山の話題

R

大気汚染データの観測

投稿日:

コーセラのDeveloping Data Productで知りたい場所の緯度経度を入力すると過去の観測データからオゾン濃度とPM25汚染濃度を予測するコードを紹介していた。Video Lectureのみだったので、コーディングしてコメントを追加しておく。

サイトのURLはこちら https://class.coursera.org/devdataprod-002/

setwd("C:/r/yhat")

## 大気汚染のデータをRに取り込む。
d <- read.csv("annual_all_2013.csv")
str(d)

## PM2.5およびオゾンデータのみとりこむ。さらに必要な変数のみにする。
sub <- subset(d, (Parameter.Name %in% c("PM2.5 - Local Conditions", "Ozone") 
  & Pollutant.Standard %in% c("Ozone 8-Hour 2008", "PM25 Annual 2006")),
  c(Longitude, Latitude, Parameter.Name, Arithmetic.Mean))
head(sub)

## 時系列で重複しているので地点で集計する。
pollavg <- aggregate(sub[,"Arithmetic.Mean"], 
  sub[,c("Longitude", "Latitude", "Parameter.Name")],
  mean, na.rm = TRUE)
names(pollavg)[4] <- "level"
pollavg <- transform(pollavg, Parameter.Name = factor(Parameter.Name))
pollavg

rm(d, sub)

## 監視地点の行列を作成する。
monitors <- data.matrix(pollavg[,c("Longitude", "Latitude")])
monitors

library(fields)

## input parameter : data frame
##    lon: longitude
##    lat: latitude
##    radius: Radius in miles for findng monitors.

pollutant <- function(df){
  x <- data.matrix(df[, c("lon", "lat")])
  r <- df$radius

  ## パラメータで引き渡された地点と監視地点の距離を計算する
  d <- rdist.earth(monitors, x) 
   # dはx地点からのmonitors地点への距離が含まれる。
   # dはリストで戻される、行数=観察対象の地点数、列数=モニタしている地点数

  ## モニタしている地点すべてについて 距離 < rとなる地点を探す
  use <- lapply(seq_len(ncol(d)), function(i) {
      which (d[,i] < r[i])
  })

  ## オゾンとPM25について集計する
  levels <- sapply(use, function(idx){
       with(pollavg[idx,], tapply(level,Parameter.Name, mean))
  })
  dlevels <- as.data.frame(t(levels))
  data.frame(df, dlevels)
}

## テスト
pollutant(data.frame(lon = -76.61, lat=39.2, radius=40))

メタ情報

inarticle



メタ情報

inarticle



-R
-,

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

no image

一対比較法によるリーグ戦の分析

一対比較法を利用すると2者の比較から全体の重要度や実力を数字で表現できる。 一対比較法を使った分析の手順は以下のようにすすめる。 データを取得する。 一対比較法のデータは複数の項目から2者を選び比較し …

no image

factorと数値型の変換

ジニ係数にファクターと数値変換についてコメントをいただいたので調べてみた。 その結果以下の3つのことがわかった。 read.csvで桁区切り文字つきの値を読み込むとfactorになる。 区切り文字つき …

no image

conjoint分析の資料

マニュアル conjointパッケージ caFactorialDesign Rでconjointパッケージを利用した例 Rでコンジョイント分析 Rでコンジョイント分析 |極めて個人的なメモ コンジョイ …

no image

与えられたパラメータにもっとも近い値を探す

ベクトルからパラメータにもっとも近い値を探す方法 >  x <- 1:10 >  num <- which( abs(x-5.2) == min(abs(x-5.2)) ) & …

no image

Rでグラフを作成するときに参考にするサイト

金子 邦彦 研究室 Web ページ バイオスタティスティクス 奥村 晴彦研究室 Related posts:データフレームで層別に操作をする一対比較法データの縦・横展開

2014年6月
« 5月   7月 »
 1
2345678
9101112131415
16171819202122
23242526272829
30  

side bar top



アーカイブ

カテゴリー