ExploratoryはR言語の上に作られた「RのUI」とも言われるツールのため、オープンソースとして公開されている2万近くもあるRパッケージの関数をそのまま使ったり、必要に応じて自分でRのスクリプトを書いたりすることで、ExploratoryのUIを通して提供されている機能以上のことを行うことができます。
Exploratoryでは、スクリプトの登録機能を使うことで、自分で作成したスクリプトを関数登録して、データフレームから呼び出すことができるようになっています。
スクリプト登録の使用例
作成した関数(スクリプト)の使用例
そこで、今回はExploratoryでスクリプトを使って関数を作成し、作成した関数を用いて計算する方法を紹介します。
今回紹介のために使用するサンプルデータは、Airbnbの東京の宿泊施設のデータを使用します。
例えば、東京駅の近くにあるAirbnbの宿泊施設の情報を調べたいとします。
それぞれの宿泊施設には緯度と経度の情報があります。
そこで、東京駅(139.7705372, 35.6777195)と各宿泊施設との距離を求めて、東京駅の近くにある宿泊施設を調べたいです
そこで使えるのが「geosphere」パッケージです。このパッケージにあるdistHaversine関数を使うことで、2点間の距離を計算することが可能です。
geosphereパッケージを使うためには、Exploratoryにインストールする必要があります。
プロジェクトのメニューから「Rパッケージの管理」を選択します。
Rパッケージの管理のダイアログが表示されるため、「geosphere」と入力をしてインストールボタンをクリックします。
例えば、計算を作成でdistHaversine関数を使って距離を求めることができるが、この関数を使うたびに計算エディタで引数を細かく指定していくのは大変です。
そこで、スクリプトを登録しておくことで、距離を求めるための関数も簡単に呼び出して実行することができるようになります。
プラスボタンから「スクリプト」を選択します。
スクリプトの入力画面となるため、下記のスクリプトをコピーして貼り付けます。
get_geo_distance = function(long1, lat1, long2, lat2, units = "miles") {
loadNamespace("purrr")
loadNamespace("geosphere")
longlat1 = purrr::map2(long1, lat1, function(x,y) c(x,y))
longlat2 = purrr::map2(long2, lat2, function(x,y) c(x,y))
distance_list = purrr::map2(longlat1, longlat2, function(x,y) geosphere::distHaversine(x, y))
distance_m = list_extract(distance_list, position = 1)
if (units == "km") {
distance = distance_m / 1000.0;
}
else if (units == "miles") {
distance = distance_m / 1609.344
}
else {
distance = distance_m
# This will return in meter as same way as distHaversine function.
}
distance
}
これにより、Exploratory内で使える「get_geo_distance」という関数を作成できました。
実行ボタンをクリックして、スクリプトを保存します。
今回作成したget_geo_distance関数のシンタックスは下記となります。
今回は各宿泊施設と東京駅(139.7705372, 35.6777195)の経度と緯度の距離を求めるために下記のように記述していきます。
列ヘッダメニューから計算を作成の「標準」を選択します。
計算エディタに下記の計算式を指定して実行します。
get_geo_distance(経度, 緯度, 139.7705372, 35.6777195, units = “km”)
これによって、それぞれの宿泊施設と東京駅との距離をkm単位で求めた列が作成されました。
今回のように、スクリプトを登録しておくことで、関数として呼び出して活用ができますので、ぜひご活用ください!