gpt4 book ai didi

R:如何在计算中使用列中的第一个值,然后为以下行切换到此结果

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:08:57 25 4
gpt4 key购买 nike

这是一个数据示例:

df <- data.frame(
dept = c(rep('FIREDEPT', 5), rep('WATERDEPT', 5)),
month = 201808:201812,
initial_stock = sample(75884:85347, 10),
variable_predicted = sample(50000:100000, 10),
variable2_predicted= sample(1:100, 10) / 100)

我需要创建一个名为“predicted_stock”的新字段,它需要按部门使用以下计算:

  • 如果月份是第一个月,则计算 initial_stock +variable_predicted * variable2_predicted
  • 如果月份不是第一个,则使用前面的predicted_stock + variable_predicted * variable2_predicted

我只能考虑使用 for 循环方法来执行此操作,但我认为这不是很明智...执行此计算的最佳方法是什么?

最佳答案

我能够使用@user2738526 帖子来做到这一点。不要认为这仍然是最佳方式,但比我最初尝试做的要好。

library(dplyr)
library(data.table)
# if first month, than use intial stock
# I "recalculate" the initial_stock,
# this is specific to the real scenario
df <- df %>% mutate(initial_stock =
ifelse(month == min(month),
initial_stock,
0
)
)

# calculate the predicted stock using cumsum
df <- df %>% group_by(DEPTO) %>% mutate(predicted_stock =
cumsum(
initial_stock
+ variable_predicted * variable2_predicted
)
)
# "recalculation" of the initial_sock is updated
# this is specific to the real scenario
df <- df %>% group_by(DEPTO) %>% mutate(initial_sock =
ifelse(month == min(month),
initial_stock ,
shift(predicted_stock, type = "lag")
)
)

关于R:如何在计算中使用列中的第一个值,然后为以下行切换到此结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52749144/

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