始める無料で始める

データが一致するかの確認

data スロットに無理やりデータを入れてもうまくいかないのは、行と空間オブジェクトの正しい対応関係が失われてしまうからです。では、所得データをポリゴンデータにどう追加すればよいでしょうか? そのために用意されているのが spmerge() 関数です。

merge() をデータフレームで見たことがあるかもしれません。sp::merge() もほぼ同じ構造ですが、Spatial*** オブジェクトとデータフレームを渡すと、新しい Spatial*** オブジェクトを返します。このとき data スロットは、元の data スロットとデータフレームをマージしたものになります。マージを行うには、空間オブジェクトとデータフレームの双方に、対応付けに使う ID を含む列が必要です。

nyc_tractsnyc_income のどちらにも地区(tract)の ID 列があるので、2つのデータセットをマージするのに最適です。ただし、提案する ID が一意であること、そして双方のデータセットのすべての行に対応があることを確認するのは常に良い習慣です。

マージに進む前に、これを確認しておきましょう。

この演習はコースの一部です

R で地理空間データを可視化する

コースを見る

演習の手順

  • nyc_income$tract に対して duplicated()any() を使い、nyc_income の各行が一意の tract ID を持つか確認してください。
  • nyc_tracts$TRACTCE に対して duplicated()any() を使い、nyc_tracts の各行が一意の tract ID を持つか確認してください。
  • nyc_tracts$TRACTCE %in% nyc_income$tractall() を使い、nyc_tracts の tract がすべて nyc_income に含まれているか確認してください。
  • nyc_income$tract %in% nyc_tracts$TRACTCEall() を使い、nyc_income の tract がすべて nyc_tracts に含まれているか確認してください。

実践的なインタラクティブ演習

このサンプルコードを完成させて、この演習に挑戦してみましょう。

# Check for duplicates in nyc_income


# Check for duplicates in nyc_tracts


# Check nyc_tracts in nyc_income


# Check nyc_income in nyc_tracts
コードを編集して実行