AlteryxのRツールでSpatial Objectを扱う
こんにちは、小澤です。
今回は、AlteryxのR ToolでSpatial Objectを含むデータを扱う方法について書かせていただきます。
デフォルト時の挙動
まずは、R Toolの入力としてSpatial Objectを含むデータを与えた時にどのような動きになるか見てみましょう。 Map Input Toolを利用して適当なポイントを用意しています。
データとしては以下のようになっています。
これをR Toolで読み込んでそのまま出力しみます。
the.data <- read.Alteryx("#1") write.Alteryx(the.data, 1)
出力された結果を確認すると以下のようになっています。
データの型も文字列になってしまっています。
Spatial Objectを入力として扱う
では、Spatial Objectを持つデータに対して途中でR Toolを使った処理を噛ませたい場合はどうすればいいのでしょうか。 R Toolにデータを読み込ませる際にDataFrameとしてではなく、listとして読み込ませることでSpatial Objectをそのまま扱うことができます。
the.data <- read.Alteryx("#1", "list") write.Alteryx(the.data, 1)
Rで読み込んだデータをprint出力で確認してみると以下のような形式になっていることが確認できます。
データは、{sp}パッケージのSpatialPoints型のようなので、coordinates関数を使って、x, yの値を取り出してやることができます。 以下のコードを実行すると、1件目のデータの座標が取得できます。
xy <- coordinates(the.data$SpatialObj[[1]] print(xy) print(class(xy))
Spatial Objectでlineやpolygonを扱っている場合も同様、{sp}パッケージのPolygonオブジェクトとして取得することができます。
# lineからPolygonオブジェクトを取得する場合 # <行番号>には実際のデータの行番号を入れる polygonsObj[[<行番号>]]@lines[[1]]@Lines # polygonからPolygonオブジェクトを取得する場合 # <行番号>には実際のデータの行番号を入れる polygonsObj[[<行番号>]]@polygons[[1]]@Polygons
これらに関して、R上でどのように扱うかはパッケージのドキュメントを参照してください。
終わりに
今回はSpatial Objectを扱うデータをR Toolで読み込む方法を紹介しました。
実際には、これ自体を利用するシーンというのは少ないかもしれませんが、R ToolでSpatial Objectを含むデータを扱う際の注意点として覚えておくといいかもしれません。