我的数据具有以下结构。对于每个国家和id,从装运列(中国和香港)中,
如果一个组同时具有中国和香港,则新列装运应具有香港
如果一个组有HK,那么新的列装运应该有HK
如果是NA,应该是NA
shipment_hk
或
shipment_china
. 以便用户可读。而且,季度值在ifelse条件下似乎不起作用。
library(dplyr)
sample_df %>% tibble::as.tibble() %>%
dplyr::group_by(country,id) %>%
dplyr::mutate(periods = ifelse(Monthly == "Monthly", "monthly", ifelse(Quarterly == "Quarterly", "quarterly", ifelse(Yearly == "Yearly", "yearly", "")))) %>%
dplyr::mutate(shipment = any(shipment_hk %in% "send to hk")) %>%
dplyr::select(country,id, type,periods,shipment)
#> # A tibble: 20 x 5
#> # Groups: country, id [7]
#> country id type periods shipment
#> <chr> <chr> <chr> <chr> <lgl>
#> 1 group_1 2.1 "" <NA> FALSE
#> 2 group_1 2.1 "bar" monthly FALSE
#> 3 group_1 2.1 "chocolate" monthly FALSE
#> 4 group_1 2.17 "" <NA> FALSE
#> 5 group_1 2.17 "bar" monthly FALSE
#> 6 group_1 2.17 "chocolate" monthly FALSE
#> 7 group_1 2.2 "" <NA> TRUE
#> 8 group_1 2.2 "" <NA> TRUE
#> 9 group_1 2.2 "bar" <NA> TRUE
#> 10 group_1 2.2 "chocolate" <NA> TRUE
#> 11 group_2 1 "" <NA> TRUE
#> 12 group_2 1 "" <NA> TRUE
#> 13 group_2 1 "bar" monthly TRUE
#> 14 group_2 2.1 "" <NA> FALSE
#> 15 group_2 2.1 "bar" monthly FALSE
#> 16 group_2 2.12.1 "" <NA> TRUE
#> 17 group_2 2.12.1 "" <NA> TRUE
#> 18 group_2 2.12.1 "donut" <NA> TRUE
#> 19 group_2 2.12.2 "" <NA> FALSE
#> 20 group_2 2.12.2 "bar" <NA> FALSE
于2020-11-03由
reprex package
dput(sample_df)
structure(list(country = c("group_1", "group_1", "group_1", "group_1",
"group_1", "group_1", "group_1", "group_1", "group_1", "group_1",
"group_2", "group_2", "group_2", "group_2", "group_2", "group_2",
"group_2", "group_2", "group_2", "group_2", "group_3", "group_3",
"group_3", "group_3", "group_3", "group_3"), id = c("2.1", "2.1",
"2.1", "2.17", "2.17", "2.17", "2.2", "2.2", "2.2", "2.2", "1",
"1", "1", "2.1", "2.1", "2.12.1", "2.12.1", "2.12.1", "2.12.2",
"2.12.2", "2.17", "2.17", "2.17", "2.18", "2.18", "2.18"), type = c("",
"bar", "chocolate", "", "bar", "chocolate", "", "", "bar", "chocolate",
"", "", "bar", "", "bar", "", "", "donut", "", "bar", "tiles",
"tiles", "tiles", "tiles", "tiles", "tiles"), shipment_china = c("send to china",
NA, NA, "send to china", NA, NA, "send to china", NA, NA, NA,
"send to china", NA, NA, "send to china", NA, "send to china",
NA, NA, "send to china", NA, NA, NA, NA, NA, NA, NA), shipment_hk = c(NA,
NA, NA, NA, NA, NA, NA, "send to hk", NA, NA, NA, "send to hk",
NA, NA, NA, NA, "send to hk", NA, NA, NA, NA, NA, NA, NA, NA,
NA), Monthly = c(NA, "Monthly", "Monthly", NA, "Monthly", "Monthly",
NA, NA, NA, NA, NA, NA, "Monthly", NA, "Monthly", NA, NA, NA,
NA, NA, NA, "Monthly", NA, NA, NA, NA), Quarterly = c(NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, "Quarterly",
NA, "Quarterly", NA, NA, NA, "Quarterly", NA, NA), Yearly = c(NA,
NA, NA, NA, NA, NA, NA, NA, "Yearly", "Yearly", NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA)), class = "data.frame", row.names = c(NA,
-26L))