1

我之前已经成功地将信息添加到 shapefile(请参阅我在http: //ruse​​rgroup.swansea.ac.uk/Healthmap.ashx?HL=map 上的帖子)。

但是,我只是尝试使用稍微不同的 shapefile(威尔士的新当地健康委员会)再次执行此操作,并且代码失败spCbind并出现“行名不相同错误”

o <- match(wales.lonlat$NEW_LABEL, wds$HB_CD)
wds.xtra <- wds[o,]
wales.ncchd <- spCbind(wales.lonlat, wds.xtra)

我的行之前确实有不同的名称,这没有造成任何问题。我重新标记了 wds.xtra 中的列以匹配“NEW_LABEL”,但这没有帮助。

wales.lonlat 和 wds.xtra 之间的标签和标签顺序完全匹配。

(我使用的是基于 R 2.13.2 构建的 Revolution R 5.0)

4

2 回答 2

3

我使用 match 根据行名(或任何其他公共 ID)将数据合并到 sp 数据槽。这避免了 spCbind 函数使用 maptools 的必要性。

# Based on rownames
sdata@data=data.frame(sdata@data, new.df[match(rownames(sdata@data), rownames(new.df)),])

# Based on common ID
sdata@data=data.frame(sdata@data, new.df[match(sdata@data$ID, new.df$ID),])

# where; sdata is your sp object and new.df is a data.frame object that you want to merge to sdata.
于 2012-10-30T19:14:38.763 回答
1

我有同样的错误,可以通过删除所有其他数据来解决它,这些数据实际上并没有被添加。我想,他们混淆了 spCbind 因为匹配想要匹配所有行元素,而不仅仅是给定的。在我的示例中,我使用了

xtra2 <- data.frame(xtra$ID_3, xtra$COMPANY)

提取相关字段并随后将它们提供给 spCbind

gadm <- spCbind(gadm, xtra2)
于 2014-03-17T15:56:37.970 回答