オープンデータとr 第2回linked open dataハッカソン関西 in 大阪

16
オープンデータ R チュートリアル かわはら 第2回Linked Open Dataハッカソン関西 in 大阪 Rって 簡単!

Upload: hiroki84

Post on 28-May-2015

667 views

Category:

Technology


0 download

DESCRIPTION

2013/12/07 Sun. 第2回Linked Open Dataハッカソン関西 in 大阪 Rチュートリアル

TRANSCRIPT

Page 1: オープンデータとR 第2回Linked Open Dataハッカソン関西 in 大阪

オープンデータ と R チュートリアル

かわはら

第2回Linked Open Dataハッカソン関西 in 大阪

Rって

簡単!

Page 2: オープンデータとR 第2回Linked Open Dataハッカソン関西 in 大阪

R で オープンデータ

• 鯖江市のデータを取得して Webブラウザ上にマッピングする

Page 3: オープンデータとR 第2回Linked Open Dataハッカソン関西 in 大阪

R は 便利な解析ツール

統計分析

• オープン & フリー

• グラフィックス

• 充実した解析環境

Page 4: オープンデータとR 第2回Linked Open Dataハッカソン関西 in 大阪

RStudio で 更に便利に

R用のIDE

統計分析

Page 5: オープンデータとR 第2回Linked Open Dataハッカソン関西 in 大阪

R の 基本操作 (変数の代入)

• a <- 1 #aに1を代入

• b <- c(1:3) #bにベクトル(1,2,3)を代入

• c <- c(‘x’, ‘y’, ‘z’)

• d <- data.frame(d1=b, d2=c)

Page 6: オープンデータとR 第2回Linked Open Dataハッカソン関西 in 大阪

R の 基本操作 (データフレーム)

• d <- data.frame(d1=b, d2=c) 要素は「$」で表す

d1 d2

1 1 x

2 2 y

3 3 z

• d$d2[1] = d[1, 2] = “x”

Page 7: オープンデータとR 第2回Linked Open Dataハッカソン関西 in 大阪

R の 基本操作 (データの確認・準備)

• str(), head(), summary()でデータ確認

str(d$d1)

• as.XXXで型を変更 as.integer, as.character…

d$d1 <- as.character(d$d1)

• names()で要素の名前取得/命名 names(d) names(d) <- c(“名前1”, “名前2”)

Page 8: オープンデータとR 第2回Linked Open Dataハッカソン関西 in 大阪

R の 基本操作 (パッケージの利用)

• Rの機能を拡張するためのパッケージ

• install.packages() … インストール • library() or require() … 呼び出し

• XML … XMLファイル操作 • googleVis … Google Visualization API

Page 9: オープンデータとR 第2回Linked Open Dataハッカソン関西 in 大阪

R で オープンデータ

• 鯖江市のAED設置場所をマッピング

Page 10: オープンデータとR 第2回Linked Open Dataハッカソン関西 in 大阪

install.packages('XML'); library(XML) #XML package

install.packages('googleVis'); library(googleVis) #googleVis package

int <- "integer"; num <- "numeric"; chr <- "character" #データ型の略記

url <- "http://www3.city.sabae.fukui.jp/xml/aed/aed.xml" #鯖江市URL

data <- xmlToDataFrame(url, stringsAsFactors=F,

colClasses=c(int, chr, chr, int, num, num, chr)) #データ取得

data$latlong <- paste(data$latitude, data$longitude, sep=":") #データ加工

plot(gvisMap(data, locationvar="latlong", tipvar="name")) #表示

R で オープンデータ (コード)

• データ取得から可視化まで、これだけ

Page 11: オープンデータとR 第2回Linked Open Dataハッカソン関西 in 大阪

R で オープンデータ (データを取得)

• XMLデータを取得する

#XMLパッケージの導入 #この中の関数xmlToDataFrameを利用する Install.packages(‘XML’) library(XML)

#関数xmlToDataFrameを使ってXMLデータを取得 #この関数についてのヘルプを見るには、?xmlToDataFrame int <- "integer“; num <- "numeric“; chr <- "character“ url <- "http://www3.city.sabae.fukui.jp/xml/aed/aed.xml" data <- xmlToDataFrame(url, stringsAsFactors=F, colClasses=c(int, chr, chr, int, num, num, chr))

Page 12: オープンデータとR 第2回Linked Open Dataハッカソン関西 in 大阪

R で オープンデータ (データの確認)

• データの中身を(簡単に)確認する

str(data)

'data.frame': 134 obs. of 7 variables: $ no : int 1 115 116 117 118 119 120 121 122 123 ... $ name : chr "鯖江高等学校 " "鯖江市嚮陽会館" "鯖江市役所" "JAたんなん ふれあいセンター " ... $ address : chr "鯖江市舟津町2丁目5-42 " "鯖江市桜町2丁目7番1号" "鯖江市西山町13番1号"... $ count : int 1 1 1 1 1 1 1 1 1 1 ... $ latitude : num 35.9 35.9 36 36 36 ... $ longitude: num 136 136 136 136 136 ... $ url : chr "http://www3.city.sabae.fukui.jp/xml/aed/#1" "http://www3.city.sabae.fukui.jp/xml/aed/#115” ...

latitude … 緯度

longitude … 経度

Page 13: オープンデータとR 第2回Linked Open Dataハッカソン関西 in 大阪

R で オープンデータ (データを加工)

• データをマッピング用に加工する

#googleVisパッケージの導入 #この中の関数gvisMapを利用する Install.packages(‘googleVis’) library(googleVis)

#gvisMap関数で座標を指定するには、「緯度:経度」の形式が必要 #dataに緯度:経度を要素とする項目latlongを追加する #「データフレーム$項目名」<- 要素 で割り当て #欲しい要素は「data$latitude:data$longitude」なので #「data$latitude」と「data$longitude」を「:」で結合(paste) data$latlong <- paste(data$latitude, data$longitude, sep=":")

Page 14: オープンデータとR 第2回Linked Open Dataハッカソン関西 in 大阪

R で オープンデータ (データを表示)

• マッピングする

#gvisMapを利用してマッピング用データを準備 map <- gvisMap(data, locationvar = “latlong”, tipvar = “name”, options = list(showTip = F, enableScrollWheel = T, useMapTypeControl = T))

#作成したデータをブラウザで表示する plot(map)

Page 15: オープンデータとR 第2回Linked Open Dataハッカソン関西 in 大阪

R で オープンデータ (完成?)

Page 16: オープンデータとR 第2回Linked Open Dataハッカソン関西 in 大阪

R で オープンデータ (SPARQLもできます!)

#SPARQLパッケージを導入する install.pacages(‘SPARQL’) library(SPARQL)

#エンドポイントの指定 endpoint <- http://services.data.gov/sparql

#クエリ query <-"PREFIX dgp1187: <http://data-gov.tw.rpi.edu/vocab/p/1187/> SELECT ?ye ?fi ?ac WHERE { ?s dgp1187:year ?ye . ?s dgp1187:fires ?fi . ?s dgp1187:acres ?ac . }"

#クエリ qd <- SPARQL(endpoint,query); qd$result