3

我一直在尝试将一列数字数据从数据帧添加到SpatialPolygon数据帧,但每次尝试都会导致后一个数据帧转换为类似于前者的标准数据帧。我需要添加列,以便可以创建以列变量为焦点的等值线图。显然,标准数据框并不好,因为我正在尝试使用tmap.

这就是我一直在尝试添加列shapefilecomb的方式(空间数据框在哪里,并且wardturnout是包含相关列的变量):

shapefilecomb <- c(wardturnout)
4

1 回答 1

6

通过赋值运算符在 SpatialPolygonsDataFrame 的数据槽中添加一列是可行的shapefilecomb$wardturnout <- wardturnout,但这不是最安全的方法。它仅依赖于位置(第一个数据项转到第一个多边形,第二个到第二个等等)。它可能会变得混乱。

它最好保留给计算字段 -shapefile$valuepercapita <- shapefile$value / shapefile$population分配类型。

对于来自外部来源的数据,最好按键分配值。append_data包中的函数tmap做得很好,不仅在发生错误时给你一个消息,而且在所有数据都完美匹配时给你确认(我发现在处理大量不完美的数据时这是一个很好的接触)。

outShape <- append_data(srcShape, frmData, key.shp = "KOD_LAU1", key.data = "LAU1")

编辑(截至 2019 年 9 月):这个答案似乎仍然很强大......但世界已经改变。

  1. tmap::append_data()已移至tmaptools::append_data() 现在已弃用

  2. sf已被替换sp为 R 空间数据中的首选包

sf世界上,空间数据存储在 modifieddata.frames中,通过键分配数据项的最合适方法是 *_join()函数之一dplyr-dplyr::left_join()为了安全起见,或者dplyr::inner_join()如果两侧过滤实际上是所需的行为。

于 2017-06-26T19:55:01.513 回答