RでSpatialPolygonsDataFrameを属性でサブセットする(ポリゴンを削除する)簡単な方法
2023-09-03 23:02:30
質問
SpatialPolygonsDataFrame オブジェクトから、@data データフレームの対応する属性値に基づいていくつかのポリゴンを削除し、簡略化/サブセットされたシェイプファイルを作成できるようにしたいのですが、その方法はありますか。 今のところ、これを行う方法は見つかっていません。
例えば、以下のデータからすべてのポリゴンを削除したいとします。 ワールドシェープファイル から、面積が 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)
どんな助けでも感謝します!
どのように解決するのですか?
は、データを上書きしているように見えますが、ポリゴンを削除しているわけではありません。データとポリゴンの両方を含むデータセットを切り出したい場合は、以下のようにします。
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 の回答をアップヴォートしてください。
関連
-
R plot.new() のエラー : 図形の余白が大きすぎる
-
Rでエラー:単項演算子への引数が無効
-
SocketTimeoutExceptionです。読み込みがタイムアウトしました
-
Rの警告 "条件の長さが1より大きいので、最初の要素しか使えない "に対する解決策
-
[解決済み] lm.fit(x,y,offset = offset, singular.ok,...) 0 非NAケースでboxcox式で計算するとエラーになる。
-
[解決済み] R および RStudio のコンソールをクリアする関数
-
[解決済み] Rの再現性のある優れた例題の作り方
-
[解決済み] Rでロードされているパッケージのバージョンを調べるには?
-
[解決済み] データフレーム内のランダムな行をサンプリングする
-
[解決済み] テーブルをデータフレームに変換する方法
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
二項演算子への非数値引数を報告するR言語エラー
-
R - よくあるエラーとその原因 - 注意事項
-
SocketTimeoutExceptionです。読み込みがタイムアウトしました
-
DEG解析で'row.names'に重複した名前を付けられない場合の解決法
-
[解決済み] パッケージ 'xxx' は利用できません (for R version x.y.z) 」という警告にどのように対処したらよいですか?
-
[解決済み] リストやデータフレームの要素にアクセスするためのブラケット[ ]とダブルブラケット[[ ]]の違いについて
-
[解決済み] Rで文字列から最後のn文字を抽出する
-
[解決済み] FUN内のlapplyインデックス名へのアクセス
-
[解決済み] データフレームのカラムのデータ型を決定する
-
[解決済み] テーブルをデータフレームに変換する方法