@data データ フレーム内の対応する属性値に基づいて、SpatialPolygonsDataFrame オブジェクトからいくつかのポリゴンを削除し、簡略化された/サブセット化されたシェープファイルをプロットできるようにしたいと思います。これまでのところ、これを実行する方法は見つかりませんでした。
例えば、この画像からすべてのポリゴンを削除したいとしますワールドシェイプファイル面積が 30000 未満のものを探しています。どうすればよいでしょうか?
または、同様に、Antartica を削除するにはどうすればよいでしょうか?
require(maptools)
getinfo.shape("TM_WORLD_BORDERS_SIMPL-0.3.shp")
# Shapefile type: Polygon, (5), # of Shapes: 246
world.map <- readShapeSpatial("TM_WORLD_BORDERS_SIMPL-0.3.shp")
class(world.map)
# [1] "SpatialPolygonsDataFrame"
# attr(,"package")
# [1] "sp"
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@data = world.map@data[world.map@data$AREA > 30000,]
plot(world.map)
こうすると結果は同じになります:
world.map@data = world.map@data[world.map@data$NAME != "Antarctica",]
plot(world.map)
どのような助けでも大歓迎です!
ベストアンサー1
データは上書きしているようですが、ポリゴンは削除されていません。データとポリゴンの両方を含むデータセットを削減したい場合は、例えば次のようにしてください。
world.map <- world.map[world.map$AREA > 30000,]
plot(world.map)
[[2016 年 4 月 19 日編集]] この解決策は以前は機能していましたが、@Bonnie は新しい R バージョンでは別の結果を報告しています (ただし、データも変更されている可能性があります)。world.map <- world.map[world.map@data$AREA > 30000, ]
役に立った場合は、@Bonnie の回答に賛成票を投じてください。