knitr::opts_chunk$set( collapse = TRUE, comment = "#>" )
必要なパッケージをダウンロードしていきます。Jtransit
はCRANではありませんのでdevtools
を利用して下記のようにダウンロードして下さい。
devtools::install_github("kmbsweb/Jtransit")
library(Jtransit) library(dplyr) library(fuzzyjoin)
Jtransit
には、全国の駅の緯度経度情報および兵庫県の駅(乗降客数を含む)の情報が含まれています。必要な範囲(box)を指定し対象とする駅を絞り込みます。ただhyo_sta
には緯度経度の情報が含まれていないため、上記で絞り込んだ対象データと結合させます。本vignetteでは、fuzzyjoin
パッケージを使ってデータを結合します。駅名が完全一致しなくても結合してくれます。
data(all_sta) data(hyo_sta) hyo_sta1 <- filter(all_sta, xcoord<135.45,135.05<xcoord) %>% filter(ycoord<34.9,34.6<ycoord) joined <- hyo_sta1 %>% stringdist_inner_join(hyo_sta, by = c(N02_005 = "station_1"), max_dist = 1)
or
はorigine(=出発地点)、des
はdestination(=目的地)を表します。今回は、出発地を神戸大学、目的地を神戸市付近の各駅とします。空のデータフレームを準備し、jtranjit
コマンドを使って、所要時間、運賃、乗換回数の情報を取得し取得できたデータ(行)を空のフレームに結合していきます。空のフレームを設定しておかなければ、データが上書きされていくことになるので注意してください。
or <- rep(c("神戸大学"), 295) des <- as.character(joined$station_2) # 空のデータフレームを準備 Data <- data.frame() # 連続処理 for (i in seq(or)){ print(paste0("...", i, "行目を処理しています。")) exdata <- transit(or[i],des[i],14,1,5) #row bind Data <- rbind(Data, exdata) }
3つのステップ(時間処理、運賃、データ結合)を通して、ggmapで表現するためのデータフレームを作成していきます。具体的には、時間処理では~時間~分という表記から~分に統一し、数値のみとします。covert_m
のコマンドを使って処理を楽にします。運賃は、”円”を取り除き数値のみとします。最後にtransit_map_dura
、transit_map_fare
に適合するデータフレームを作成します。今回は200分以内でいける駅のみとし、FD2
というデータフレームが得られました。
Data$duration <- gsub("分","m", Data$duration) Data$duration <- gsub("時間","h", Data$duration) time <- Data$duration dataF <- data.frame(origin=or,time=time) #結果 DD <- covert_m(dataF,2)
Data$fare <- as.numeric(gsub("円", "", Data$fare))
FD <- data.frame(joined[,8],DD[,4],Data$fare,joined[,6:7]) names(FD)[1]<-"destination" names(FD)[2]<-"duration" names(FD)[3]<-"fare" names(FD)[4]<-"longitude" names(FD)[5]<-"latitude" FD2 <- FD %>% filter(duration< 200)
ggmapにより取得したデータを可視化します。transit_map_dura
、transit_map_fare
の第1引数には、地図の中心とする緯度経度情報(今回は神戸大学の緯度経度)、第2引数には地図の倍率(適宜変更して下さい)、第3引数には対象とするデータフレームを与えて下さい。ただし、上記3.の型で作成しなければエラーとなります。
library(ggmap) transit_map_dura(135.235395,34.725918,11,FD2) transit_map_fare(135.235395,34.725918,11,FD2)
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.