Хорошо. У меня есть пример тиббла ниже.
В строках # 9, 10, 11 мы имеем одинаковые Номер заказа
. Мне нужно установить одинаковое значение ID корзины
для всех трех, как в первом случае - «141330». Я пробовал case_when и if_else, но, похоже, мне нужно написать здесь функцию ...
library(data.table)
library(tidyverse)
orders <- fread("~/Downloads/orders.csv", select = c("id", "Номер заказа", "Статус", "ID корзины", "ФР", "Сумма"),
colClasses = list(character = c("id", "Номер заказа", "Статус", "ID корзины"),
numeric = c("ФР", "Сумма")), dec = ",")
orders1 <- orders %>%
mutate(`Номер заказа` = stringr::str_remove(`Номер заказа`, ".*Р-")) %>%
group_by(id, `Номер заказа`, Статус) %>%
summarise(`ID корзины`, ФР = sum(ФР, na.rm = T), Сумма = sum(Сумма, na.rm = T))
orders1
#> # A tibble: 12 x 6
#> # Groups: id, Номер заказа [12]
#> id `Номер заказа` Статус `ID корзины` ФР Сумма
#> <chr> <chr> <chr> <chr> <dbl> <dbl>
#> 1 11061 180618-11061 Отменен "66843" 66.0 218
#> 2 20752 260219-20752 Отменен "98537" 0 928
#> 3 24450 040619-24450 Отменен "108330" 0 -51
#> 4 24552 060619-24552 Отменен "108516" -53.8 -22
#> 5 33064 241219-33064 Отменен "134157" 0 260
#> 6 35137 070220-35137 Доставлен "" 492. 1520
#> 7 36117 290220-36117 Передан на склад "141275" 0 326
#> 8 36142 290220-36142 Передан на склад "138181" 0 999
#> 9 36147 010320-36147 Передан на склад "141330" 0 1025
#> 10 36155 010320-36147 Передан на отгрузку (отправлен… "" 0 335
#> 11 36157 010320-36147 Передан на отгрузку (отправлен… "" 0 592
#> 12 4548 4361 Доставлен "41096" 472. 1678
Создано в 2020-03-02 пакетом prex (v0. 3,0)