微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何根据 R 中的属性删除 SpatialPolygonsDataFrame 的特定特征?

如何解决如何根据 R 中的属性删除 SpatialPolygonsDataFrame 的特定特征?

由于不欢迎在已回答的现有问题下提出问题,这里我的问题链接到此问题网址:Simple way to subset SpatialPolygonsDataFrame (i.e. delete polygons) by attribute in R,您还可以在其中获取数据集.

有没有人知道如何根据值向量从 SpatialpolygonsDataFrame删除多个特征?

head(world.map@data)
#   FIPS ISO2 ISO3 UN                NAME   AREA  POP2005 REGION SUBREGION     LON     LAT
# 0   AC   AG  ATG 28 Antigua and Barbuda     44    83039     19        29 -61.783  17.078
# 1   AG   DZ  DZA 12             Algeria 238174 32854159      2        15   2.632  28.163
# 2   AJ   AZ  AZE 31          Azerbaijan   8260  8352021    142       145  47.395  40.430
# 3   AL   AL  ALB  8             Albania   2740  3153731    150        39  20.068  41.143
# 4   AM   AM  ARM 51             Armenia   2820  3017661    142       145  44.563  40.534
# 5   AO   AO  AGO 24              Angola 124670 16095214      2        17  17.544 -12.296

我想删除名称为“芬兰”、“挪威”、“瑞典”、“丹麦”的特征(无意冒犯,我只是没有斯堪的纳维亚的数据;) ).

以下方法失败:

world.map <- world.map[world.map@data$NAME != c('Finland','norway','Sweden','Denmark'),]
# does not work at all

world.map <- dplyr::filter(world.map@data,NAMEN %in% c('Finland','Denmark'))
# results in a dataframe,spatial information is lost

我猜有一种使用 base::which()%in%方法,但我不知道如何继续。 @Jeffrey Evans 在这文章中的回答见 URL:https://gis.stackexchange.com/questions/57844/subset-a-spatialpolygonsdataframe-by-id-in-r 可以提供一个有用的提示...

解决方法

您可以按行 ID 对 SpatialPolygonsDataFrame 进行子集化:

# row numbers of countries,exluding scandinavia
ids <- which(
!(world.map$NAME %in% c('Finland','Norway','Sweden','Denmark'))
)

# subset
not_scandinavia <- world.map[ids,]

# plot
plot(not_scandinavia)

enter image description here

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。