检查数据是否能匹配
强行把您的数据塞进 data 槽不可行,因为这会破坏行与空间对象之间的正确对应关系。那应当如何把收入数据添加到多边形数据中呢?sp 包中的 merge() 函数正是为此而设计的。
您可能在数据框中见过 merge()。sp::merge() 的结构几乎完全相同,但它接收一个 Spatial*** 对象和一个数据框,并返回一个新的 Spatial*** 对象,其中的数据槽是原数据槽与该数据框合并的结果。要完成这次合并,空间对象和数据框都需要有一列包含用于匹配的 ID。
nyc_tracts 和 nyc_income 都有包含普查小区 ID 的列,因此非常适合合并这两个数据集。不过,最好先检查拟用于匹配的 ID 是否唯一,并且两个数据集的每一行都能在对方数据集中找到匹配。
在继续合并之前,让我们先来检查一下。
本练习是课程的一部分
在 R 中可视化地理空间数据
练习说明
- 将
any()与duplicated()一起用于nyc_income$tract,检查nyc_income中每一行是否具有唯一的小区 ID。 - 将
any()与duplicated()一起用于nyc_tracts$TRACTCE,检查nyc_tracts中每一行是否具有唯一的小区 ID。 - 对
nyc_tracts$TRACTCE %in% nyc_income$tract使用all(),检查nyc_tracts的小区是否都出现在nyc_income中。 - 对
nyc_income$tract %in% nyc_tracts$TRACTCE使用all(),检查nyc_income的小区是否都出现在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