【发布时间】:2021-07-03 00:18:31
【问题描述】:
我有一个这样的数据框:
example.df <- data.frame(Year = rep(1:3, each = 3),
Product = rep(c("bottle_water", "tap_water", "juice"), 3),
Product_grouped = rep(c("water", "water", "juice"), 3),
Required = c(10, 15, 10, 10, 20, 10, 10, 35, 0),
Group_avail = rep(c(25, 25, 10), 3),
Purchased = c(0, 0, 0, 5, 0, 0, 20, 0, 0))
> example.df
Year Product Product_grouped Required Group_avail Purchased
1 1 bottle_water water 10 25 0
2 1 tap_water water 15 25 0
3 1 juice juice 10 10 0
4 2 bottle_water water 10 25 5
5 2 tap_water water 20 25 0
6 2 juice juice 10 10 0
7 3 bottle_water water 10 25 20
8 3 tap_water water 35 25 0
9 3 juice juice 0 10 0
对于每个Year,我有每个Product 的Required 数量。其中两个产品(tap_water 和bottled_water)可归入water。在这种情况下,可用总量显示在Group_avail。
当总RequiredProduct_grouped大于Group_avail时,我想购买差额。但是,区别只能是 bottle_water 中的 Purchased。例如,在Year 2 中,我们需要 20 个tap_water 和 10 个bottle_water,但只有 25 个可用水,所以 5 个bottle_water 是Purchased。
我正在寻找适合管道的解决方案。
谢谢!
编辑
我添加了另一个 Year 以进一步明确我想要的内容。在超过Product_grouped 的总Required 的任何情况下,应始终在bottle_water 中购买差额。
【问题讨论】:
-
你怎么知道必须购买的是
bottle_water而不是tap_water? -
我希望编辑让我更清楚我想要什么
标签: r dataframe dplyr data-wrangling