gpt4 book ai didi

r - 计算分组变量之和与另一个变量之间的差异

转载 作者:行者123 更新时间:2023-12-02 16:10:12 26 4
gpt4 key购买 nike

我有一个这样的数据框:

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,我都有每个 ProductRequired 数量。其中两种产品(tap_waterbottled_water)可以归入water。在这种情况下,可用的总数量显示在 Group_avail 中。

在总Required Product_grouped 大于Group_avail 的年份,我想购买差价。但是,差额必须仅在 bottle_water购买。例如,在 Year 2,我们需要 20 tap_water 和 10 bottle_water 但只有 25 水可用,所以 5 bottle_water 购买的

我正在寻找适合管道的解决方案。

谢谢!

编辑我添加了另一个 Year 以进一步明确我想要的内容。在超过 Product_grouped 的总 Required 的情况下,应始终在 bottle_water 中购买差额。

最佳答案

希望这就是您要找的。为了您的目的,我首先修改了 Required 列以显示每个 Product_groupedsum 然后我检查每个组第一行的总和是否超过Group_avail 与否。如果我们计算差异,前提是我们的第一个类别始终是 bottle_water。如果您想将 Required 列恢复为原始形式,我可以进行修改,只是想确保这是您首先要查找的内容。

library(dplyr)

example.df %>%
group_by(Year, Product_grouped) %>%
mutate(Required = sum(Required),
Purchased02 = if_else(Required >= Group_avail & Product == "bottle_water",
Required - Group_avail, 0))

# A tibble: 9 x 7
# Groups: Year, Product_grouped [6]
Year Product Product_grouped Required Group_avail Purchased Purchased02
<int> <chr> <chr> <dbl> <dbl> <dbl> <dbl>
1 1 bottle_water water 25 25 0 0
2 1 tap_water water 25 25 0 0
3 1 juice juice 10 10 0 0
4 2 bottle_water water 30 25 5 5
5 2 tap_water water 30 25 0 0
6 2 juice juice 10 10 0 0
7 3 bottle_water water 45 25 20 20
8 3 tap_water water 45 25 0 0
9 3 juice juice 0 10 0 0

关于r - 计算分组变量之和与另一个变量之间的差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68227552/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com