データフレーム内のグループにさまざまなsf関数を適用します

キャプテンピカード

パイプ接続されたdplyr関数呼び出しのセットを使用して、単一の単純なフィーチャデータフレーム内でさまざまなユークリッドバッファー(1つは400m、もう1つは800m)を計算しようとしています。バッファ距離は、グループ化変数の値に基づいて、フィーチャごとに指定する必要があります。グループ化変数の既知の値に基づいてデータフレームを簡単に分割できますが、メソッドをできるだけ一般的にしたいと思います。

次のコードは機能しますが、明らかにすべてのグループに対して単一の400mバッファーのみを返します。

library(sf)
library(dplyr)

set.seed(42)
nc <- st_read(system.file("shape/nc.shp", package="sf"))
nc$grp <- sample(c(0,1), replace = TRUE, size = 100)

nc_buff <- nc %>%
  group_by(grp) %>%
  st_transform(32119) %>%
  group_map(~ st_buffer(.x, 400))

理想的には、データフレームを分割し、各バッファーを計算して、両方のバッファーセットを組み合わせた単一の単純なフィーチャデータフレームを返します。

grp == 0の場合は400mのバッファとgrp == 1の場合は800mのバッファを含む単一のデータフレームを返すにはどうすればよいですか?

lbusett

実際にgroupデータを使用する必要はありませんgroup_map実際には、バッファ幅のベクトルを直接st_buffer:に渡すことができます

library(sf)
library(dplyr) 
set.seed(42)
nc <- st_read(system.file("/shape/nc.shp", package="sf")) %>% 
    st_transform(32119) %>%
    st_centroid() %>% 
    mutate(grp = sample(c(0,1), 100, replace = TRUE))

ここでは、バッファ幅の列をオンザフライで「作成」します

nc_buff <- nc %>%
  st_buffer(., ifelse(.$grp == 0, 4000, 8000))

plot(nc_buff["NAME"])

より複雑なケースや読みやすさの向上については、たとえばifelseまたはcase_whenを使用して、事前にmutateを使用してバッファー列を作成することもできます

 nc_buff <- nc %>%
  mutate(buf_wdt = ifelse(.$grp == 0, 4000, 8000)) %>% 
  st_buffer(., .$buf_wdt) %>% 
  select(-buf_wdt)  

HTH!

reprexパッケージ(v0.3.0)によって2019-12-27に作成されました

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

グループ化されたデータフレームに関数を適用し、複数の出力をデータフレームに保存します

分類Dev

さまざまなデータ フレームからデータを取得し、その中に条件を持つ関数を適用する方法は?

分類Dev

pandasデータフレームのさまざまな列にさまざまな関数を適用する方法

分類Dev

自己相関関数acf()をデータフレーム内のグループごとのベクトルのセットの要素に適用します

分類Dev

パンダはユーザー定義関数を複数の列のグループ化されたデータフレームに適用します

分類Dev

Daskのグループ化されたデータフレームに関数を適用する:グループ化されたデータフレームを関数の引数としてどのように指定しますか?

分類Dev

Pythonデータフレームは、列ごとにグループごとに関数を適用します

分類Dev

データフレーム値を指定された数のグループに分割し、関数を適用します-パンダ

分類Dev

Pythonのデータフレームでグループ化されたものにいくつかの関数を適用します

分類Dev

フィルタを使用して、さまざまな変数にデータフレームを適用します

分類Dev

列全体の関数を適用するときに、データフレーム内のさまざまな列から特定の値をどのように取得しますか?

分類Dev

purrrを使用してグループ化されたデータフレームにマップ関数を適用します

分類Dev

dplyrを使用して各グループに関数を適用し、指定されたデータフレームを返します

分類Dev

さまざまな集計関数をパンダデータフレームのさまざまな列に適用するPythonの方法は?そして、列に効率的に名前を付けるには?

分類Dev

列の数に関係なく、データフレームに行ごとに関数を適用します

分類Dev

ループ内の列のリストに関数を適用し、データフレームを出力します

分類Dev

パンダは、グループ内のさまざまな行にさまざまな機能を使用してグループ化/適用します

分類Dev

pandasデータフレームの各列に関数を適用します

分類Dev

データフレームにさまざまなフィルターを適用するループを作成する方法

分類Dev

データフレームのリスト内の対応する要素に関数を適用します

分類Dev

リスト内のデータフレームの列にいくつかの関数を適用します

分類Dev

グループ化されたデータフレームに「shift」を使用する関数を適用して、パンダから単純なデータフレームを返すことはできますか?

分類Dev

リスト内の各データフレームの各要素に関数を適用します

分類Dev

Pythonパンダはグループ化されたデータフレームに関数を適用します

分類Dev

forループなしでPandasデータフレームの複数の列に関数を適用できますか?

分類Dev

forループなしでパンダデータフレームのすべての列に関数を適用しますか?

分類Dev

さまざまな数のデータフレームを表示します

分類Dev

関数データフレーム列を適用します

分類Dev

データフレームのさまざまな列にさまざまな形式を適用するにはどうすればよいですか?

Related 関連記事

  1. 1

    グループ化されたデータフレームに関数を適用し、複数の出力をデータフレームに保存します

  2. 2

    さまざまなデータ フレームからデータを取得し、その中に条件を持つ関数を適用する方法は?

  3. 3

    pandasデータフレームのさまざまな列にさまざまな関数を適用する方法

  4. 4

    自己相関関数acf()をデータフレーム内のグループごとのベクトルのセットの要素に適用します

  5. 5

    パンダはユーザー定義関数を複数の列のグループ化されたデータフレームに適用します

  6. 6

    Daskのグループ化されたデータフレームに関数を適用する:グループ化されたデータフレームを関数の引数としてどのように指定しますか?

  7. 7

    Pythonデータフレームは、列ごとにグループごとに関数を適用します

  8. 8

    データフレーム値を指定された数のグループに分割し、関数を適用します-パンダ

  9. 9

    Pythonのデータフレームでグループ化されたものにいくつかの関数を適用します

  10. 10

    フィルタを使用して、さまざまな変数にデータフレームを適用します

  11. 11

    列全体の関数を適用するときに、データフレーム内のさまざまな列から特定の値をどのように取得しますか?

  12. 12

    purrrを使用してグループ化されたデータフレームにマップ関数を適用します

  13. 13

    dplyrを使用して各グループに関数を適用し、指定されたデータフレームを返します

  14. 14

    さまざまな集計関数をパンダデータフレームのさまざまな列に適用するPythonの方法は?そして、列に効率的に名前を付けるには?

  15. 15

    列の数に関係なく、データフレームに行ごとに関数を適用します

  16. 16

    ループ内の列のリストに関数を適用し、データフレームを出力します

  17. 17

    パンダは、グループ内のさまざまな行にさまざまな機能を使用してグループ化/適用します

  18. 18

    pandasデータフレームの各列に関数を適用します

  19. 19

    データフレームにさまざまなフィルターを適用するループを作成する方法

  20. 20

    データフレームのリスト内の対応する要素に関数を適用します

  21. 21

    リスト内のデータフレームの列にいくつかの関数を適用します

  22. 22

    グループ化されたデータフレームに「shift」を使用する関数を適用して、パンダから単純なデータフレームを返すことはできますか?

  23. 23

    リスト内の各データフレームの各要素に関数を適用します

  24. 24

    Pythonパンダはグループ化されたデータフレームに関数を適用します

  25. 25

    forループなしでPandasデータフレームの複数の列に関数を適用できますか?

  26. 26

    forループなしでパンダデータフレームのすべての列に関数を適用しますか?

  27. 27

    さまざまな数のデータフレームを表示します

  28. 28

    関数データフレーム列を適用します

  29. 29

    データフレームのさまざまな列にさまざまな形式を適用するにはどうすればよいですか?

ホットタグ

アーカイブ