我一直试图将一列数值数据从dataframe添加到SpatialPolygon dataframe中,但是每次尝试都会导致后者被转换为类似于前者的标准数据。我需要添加列,这样我就可以创建一个以列的变量为焦点的choropleth映射。显然,标准的dataframe是不好的,因为我试图使用tmap创建一个映射。
这就是我一直试图添加列的方法(其中shapefilecomb是空间数据,wardturnout是包含该列的变量):
shapefilecomb <- c(wardturnout)发布于 2017-06-26 19:55:01
通过赋值操作符shapefilecomb$wardturnout <- wardturnout将列添加到shapefilecomb$wardturnout <- wardturnout的数据槽中是可行的,但这并不是最安全的工作方式。它只依赖于位置(第一个数据项转到第一个多边形,第二个到第二个,等等)。可能会很乱。
它最好为计算字段保留-- shapefile$valuepercapita <- shapefile$value / shapefile$population类型的赋值。
对于来自外部源的数据,按键分配值要好得多。来自tmap包的函数tmap很好地做到了这一点,它不仅在错误发生时给出消息,而且在所有数据完全匹配时(我在处理大量不完美数据时发现这是一个很好的触摸)。
outShape <- append_data(srcShape, frmData, key.shp = "KOD_LAU1", key.data = "LAU1")
编辑(截至2019年9月):这个答案似乎仍然很强.尽管世界已经发生了变化。
tmap::append_data()已经转移到tmaptools::append_data(),现在已经不再推荐了sf已经取代了sp成为R中空间数据的访问包。在sf世界中,空间数据存储在修改的data.frames中,按键分配数据项的最合适方法是dplyr的*_join()函数之一--或者是dplyr::left_join()处于安全的一边,或者是如果双方过滤是实际需要的行为,则是dplyr::inner_join()。
https://stackoverflow.com/questions/43505467
复制相似问题