motsu's blog

大学生のブログ, 主に統計とか 数学とか 諸々の話題

Rのジオコーディングで詰まった話

状況

住所から経度緯度を求めたい。いわゆるジオコーディングを行いたい。今回はGoogle APIとRのライブラリであるggmapを用いてジオコーディングを行った。

使用言語

R 3.6.1

発生した問題点

hoge %>% 
  mutate(緯度 = geocode(住所)$lat,
         経度 = geocode(住所)$lon)

を実行した際に、

Error in geocode(住所) : is.character(location) is not TRUE

とデータの型がcharacterではないことをエラーが出た。

解決方法

hoge$住所 <- as.character(hoge$住所)

としてデータの型をcharacterに変更した。

終わりに

データの型によるエラーで今後ジオコーディングを行う際の備忘録として記している。

コード

# パッケージの読み込みとAPIの設定
library(ggmap)
library(tidyverse)
library(dplyr)
register_google("your google api key ")
has_google_key() 

# データの読み込み
hoge <- read.csv("hoge.csv",row.names = 1)
# 経度緯度に変換したい住所のデータ型をcharに変更
hoge$住所 <- as.character(hoge$住所)
# ジオコーディングを行う
hoge_address <- geocode(hoge$住所)
# データを結合する
hoge <- cbind(hoge,hoge_address)
# csv形式で出力する
write.csv(hoge, "hoge.csv")

参考

R:複数ポイントの一括ジオコーディング→ggplot2でマッピングして背景にGoogleMapを重ねる。
ggmapパッケージを用いて住所から緯度経度のデータを得る