私は品目番号と在庫場所のリストを持っています。アイテムは、warehouse
またはpar
の2種類の在庫場所に表示されます。特定の品目番号が倉庫の場所に関連付けられているかどうかを示すために、データに列を追加したいと考えています。サンプルデータは以下の通りです:R dplyr - 他の行の結果に基づいて列を追加
item_num <- c("Item - 1", "Item - 2", "Item - 3", "Item - 1", "Item - 3",
"Item - 2")
locs <- c("warehouse", "par", "par", "par", "warehouse", "par")
fake_data <- tibble(item_num, locs)
fake_data
# A tibble: 6 x 2
item_num locs
<chr> <chr>
1 Item - 1 warehouse
2 Item - 2 par
3 Item - 3 par
4 Item - 1 par
5 Item - 3 warehouse
6 Item - 2 par
私は私のデータでは、これらの両方のための倉庫の場所があるので、すべてのItem - 1
とItem - 3
ためTRUE
だろう列を追加したいと思います。 Item - 2
の場合はfalseになります。このようなもの:
item_num locs wh_exists
1 Item - 1 warehouse TRUE
2 Item - 2 par FALSE
3 Item - 3 par TRUE
4 Item - 1 par TRUE
5 Item - 3 warehouse TRUE
6 Item - 2 par FALSE
私の面倒な解決策は以下のとおりです。
wh_locs <- fake_data %>%
filter(locs == "warehouse")
fake_data$wh_exist <- fake_data$item_num %in% wh_locs$item_num
fake_data
# A tibble: 6 x 3
item_num locs wh_exist
<chr> <chr> <lgl>
1 Item - 1 warehouse TRUE
2 Item - 2 par FALSE
3 Item - 3 par TRUE
4 Item - 1 par TRUE
5 Item - 3 warehouse TRUE
6 Item - 2 par FALSE
これは動作しますが、私は機能の一つパイプで連結されたセットでそれをすべて保つことができるように、答えを得るためにmutate
とgroup_by
を使用するためのいくつかの巧妙な方法があるべきだと私には思えます。
ありがとうございます。