R

RQGISを利用してみる

RQGISパッケージを利用することでQGISの関数を利用することができる。 インストール方法はvignetteにまとめられているので、そちらを参考に進めるとインストールできる。 ger <- raster::getData(name = "GADM", country = "DEU", level = 1) library(sp) li…

学会名鑑による建築・土木系学会の会員数

日本の学会を調べるのに便利?な学会名鑑というものがある。 分野ごとに学会を調べられるので、土木工学・建築学に絞ってスクレイピングし、 学会の会員種別ごとの人数を調べてみた。 土木学会、日本建築学会がメジャーな学会であることがわかる。 7位には土…

建設総合統計の可視化

国土交通省では、国内の建設活動を出来高ベースで把握することを目的に建設総合統計を毎月発表している。 気が向いたので、ちょっと可視化してみた。 使用するデータは2017/9/19に発表された2010年4月から2017年7月分までのデータを利用する。 都道府県別の…

sf::read_sf()とrgdal::readOGR()とtmaptools::read_shp()の速度比較

Rでシェープファイルデータを読込むための関数でどれが一番速度が速いか比較する。 library(sf) library(tmaptools) library(rgdal) library(microbenchmark) rfile <- system.file("shape/nc.shp", package="sf") microbenchmark(sf::read_sf(rfile), sf::s…

mapview::mapview()の引数オプション

mapview::mapview()で利用する引数に関するメモ。 library(mapview) library(sf) nc <- read_sf(system.file("shape/nc.shp", package="sf")) mapview(nc, zcol="AREA", # 色分けするデータ(列) #color="blue", # ラインの色 #col.regions="red", # ポリゴ…

sfオブジェクトをggplot()する場合はgeometryカラムの名前に注意

geom_sf()関数を利用するにあたり geometryカラムがgeometryではなくgeomの場合にはエラーが出た。 解決方法のメモ。 library(sf) library(ggplot2) library(spData) data(world) head(world) Simple feature collection with 6 features and 10 fields geom…

facet_wrap()利用時にすべてのデータを表示させておく

ggplot2においてfacet_wrap()関数は便利であり利用頻度が高いが、 当該分類データ以外のデータを背景として表示させ、 分布状況をより明快にしたい場合がある。 library(ggplot2) library(dplyr) mtcars %>% ggplot(aes(disp, mpg)) + geom_point()+ facet_w…

特定の値をNAに置き換える(またはNAを特定の値に置き換える)

国土数値情報からダウンロードしたメッシュデータの中にはunknownという値が含まれており、 各フィールドはキャラクターとして認識され、意図している数値型として認識されていない事例に遭遇した。 皆さんどうしてるんですかね? とりあえずunknownという値…

read_sf()とst_read()

r sf

st_read()とread_sf() 最近read_sf()という関数を知った。 st_read()との違いに関してメモ。 read_sf()の関数について確認すると以下のようになっており、 quiet=TRUE, stringsAsFactors=FALSEでデータを読み込んでいる。 library(sf) library(dplyr) read_s…

sfパッケージによる空間データの操作

r sf

利用パッケージ library(sf) library(tidyverse) library(viridis) library(jpndistrict) データの準備 fukuoka <- jpndistrict::spdf_jpn_pref(code=40) class(fukuoka) [1] "SpatialPolygonsDataFrame" attr(,"package") [1] "sp" spクラスからsfクラスへ…

ggplot2でグループごとの図を出力する

ggplotでグループごとに図を出力したい場合がある。 意外と簡単な方法でできるのでメモ。 stackoverflow.com library(ggplot2) library(dplyr) res <- iris %>% group_by(Species) %>% do( plots= ggplot(data=.) + geom_point(aes(Sepal.Length, Petal.Leng…

また株価で遊んでみた

r

ここで取得した株価で遊んでみた。 ooooooha.hatenablog.com 建設業関連の株価の終値の増加率の累積地を可視化してみた。 全体的に株価が上昇しているのがわかる。 塩漬けでも投資しておけば小遣い程度は稼げたんだろうな。 これをみると景気拡大期間バブル…

Rでインタラクティブな地図表示はmapviewで十分

たまたまmapviewパッケージのヘルプ(example)をみていたら、 mapview()関数を + でつないでいく方法があることを知った。 もう単なる地図表示だけとりあえず表示してインタラクティブに確認したい場合は これを使えば十分そう。 ただし、データ容量の大きい…

ポリゴン内にテキスト(ラベル)を表示する

ポリゴン内に各ポリゴンの属性を表示したい。 何回か調べているので、メモとして残す。 # using packages library(ggplot2) library(kokudosuuchi) library(sf) library(sp) options(stringsAsFactors = F) # preparation url <- kokudosuuchi::getKSJURL("N…

ここ一年のTOPIX30の株価(終値)の推移

ここ一年のTOPIX30の株価(終値)を可視化してみた。 便利なパッケージがあるらしいが、うまく機能しなかった。 yahooではスクレイピングを禁止しているらしい、 また、させないように仕様を頻繁に?変更しているらしいので、 そのほかでできそうな記事を参…

自作関数の高速化

efficient R programingを読んでいて今後使えそうなことに関するメモ。 3.7 では自作関数の高速化について述べられている。 自作関数にcompiler::cmpfun()を適用すればよいだけらしい。 library(compiler) mean_r = function(x) { m = 0 n = length(x) for(i…

tmapとggplot2の出力結果の比較

空間データのプロット sfやspクラスオブジェクトのデータをプロットする方法について tmapとggplot2パッケージによる出力を比較してみる。 library(tmap) library(sf) library(mapview) library(ggplot2) spクラスオブジェクトとsfクラスオブジェクトの2つを…

行の結合にはrbind.fill()が便利

各データフレームを行で結合したい場合がある。 列で結合する場合はleft_join()などのjoin関数がある。 データがない部分はNAで保管される。 library(plyr) rbind.fill(mtcars[c("mpg", "wt")], mtcars[c("wt", "cyl")]) mpg wt cyl 1 21.0 2.620 NA 2 21.0 …

leaflet、mapviewパッケージを用いた可視化のコードサンプル

いつも調べながら書いているので、 よく利用するオプションを書いておく # 必要とするパッケージ library(mapview) library(kokudosuuchi) library(tidyverse) library(sp) # データの読込(岐阜県の行政区域) getURL <- kokudosuuchi::getKSJURL("N03", pref…

data.frameからsfクラスのデータを作成する方法

r sf

結論から言うとst_as_sf(data.frame, coords=c(x, y), crs=4612)というように行えばよい library(sp) library(sf) data(meuse) head(meuse) ## x y cadmium copper lead zinc elev dist om ffreq soil lime landuse ## 1 181072 333611 11.7 85 299 1022 7.9…

sfクラスのデータ抽出

r sf

ポリゴン内のポイントまたはポイントがあるポリゴンデータを抽出したい場合がある. 特に難しいことはないが,メモとして残しておく. library(sf) set.seed(1) nc <- system.file("shape/nc.shp", package="sf") %>% st_read nc1 <- nc[1:50, ] nc_points <…

公示価格を可視化してみた

r

国土数値情報の中には「地価公示」のデータがあったので、可視化してみた。 バブリーな時代があったんだなということが改ためて確認できた。 また、東京の一極集中が加速していて、バブル期に迫るくらいに土地の値段が上がっていた。 2017年の各都道府県…

popupTable()の利用に関して

mapview::popupTable()を利用すると、簡単にポップアップを作成でき便利であるが、 windows環境だと文字コードの問題があり?うまく表示できないことが多い。 その際には以下のようにすることで解決することができる。 m_base <- leaflet(options = leafletO…

J-STAGEのWebAPIを利用してみる

J-STAGE WebAPIを利用してみる r Sys.Date() J-stageからWebAPIを利用して論文タイトル等の一覧を取得する J-STAGEは普段使うにはアクセスに時間がかかり使いにくいと思っていたが、 J-STAGE WebAPI が利用できるようなので試してみる。 建築学会の論文集を…

RでのGIS演算時には座標参照系の確認が大切

r gis

RでGIS演算(例えば面積を算出)を行う場合には座標参照系を確認しておく必要がある。 adm_area <- sf::st_read("N03/2016/N03-16_17_160101.shp", crs = 4612, options = "ENCODING=UTF-8") adm_area %>% as(., "Spatial") %>% rgeos::gArea(byid = T) %>% …

st_read()での読み込み時のエンコード指定

r sf

下記のように適宜エンコードを指定すると文字化けを回避することができる。 library(sf) sf::st_read("***.shp", options = "ENCODING=UTF-8")) 詳細はここ

mapviewパッケージによるインタラクティブな作図

leaflet::leaflet() で基本図の設定を行ったうえで、 mapview::garnishMap()関数を用いることにより様々な図を 重ねていくことができる。 最後にaddLayersControl()により、レイヤーの構成を調整することができる。 library(mapview) library(sf) nc <- st_r…

ポリゴン内のラインデータの抽出(切取り)

r gis

何回も調べたりしているため、メモ。 ポリゴン内のライン長さを出したいときがある。 その際はラインをポリゴンでインターセクトする必要がある。 関数はrgeos::gIntersection()を利用する。 sp::over()関数で行うと意図と異なる結果となるため注意。 (適切…

sf classデータの操作及びプロット

r sf

sfパッケージ(クラス)は空間データを簡単に操作することができ非常に便利である。 spパッケージ(クラス)はそれらを扱う多様なパッケージが存在するが、 自分自身で多少の編集を行うのは少し面倒であった。 Simple Features for Rだけあってデータ操作は…

ggpairs()できれいなペアプロット

pairs()をggplot2風に書けるらしい。 library(tidyverse) library(GGally) iris %>% GGally::ggpairs(data = ., aes(color = Species)) 美しいペアプロット図を簡単に作る