繁体   English   中英

R dplyr:使用前一行值和 function 计算行值

[英]R dplyr: Calculating row values by using previous row value and a function

我正在尝试在 R 中创建一个 function,这将使我能够确定产品缺货的日期。 我希望这个 function 能够计算预定的传入订单并显示库存单位的“运行总数”。 以下是迄今为止我能够做到的可重复的想法。

library(tidyverse)
library(lubridate)

runrate <- 25

onHand <- tibble(date = Sys.Date(), OnHand = 2000)

ord_tbl <- tibble(date = c(ymd("2020-04-09"), ymd("2020-04-12"), ymd("2020-04-17")), onOrder = c(200, 500, 100))



date_tbl <- tibble(date = seq.Date(from = Sys.Date(), to = Sys.Date() + 180, by = "day")) %>% 
                mutate(Month = month(date, label = TRUE))

joined_tbl <- date_tbl %>% 
    left_join(onHand) %>% 
    left_join(ord_tbl) 

joined_tbl <- joined_tbl %>% 
    mutate(OnHand = coalesce(joined_tbl$OnHand, 0),
           onOrder = coalesce(joined_tbl$onOrder, 0),
           id = row_number()) %>% 
    mutate(usage = id * runrate) %>% 
    select(id, everything()) 

start_inv_value <- joined_tbl %>% 
    filter(date == Sys.Date()) %>% 
    select(OnHand)

joined_tbl %>% 
    mutate(projected_On_Hand = start_inv_value$OnHand - (id * usage) + onOrder)

理想情况下,我想获取手头的起始库存值,然后减去每日使用量并添加预期收到的单位; 但是,我无法降低前几天的projected_on_hand 值。

预期结果如下所示:

预期结果

谢谢您的帮助!

我认为您可能希望包含onOrder的累积总和(使用cumsum )。 此外,您可以只减去每行的使用量。

joined_tbl %>% 
  mutate(projected_On_Hand = start_inv_value$OnHand - usage + cumsum(onOrder))

Output

# A tibble: 181 x 7
      id date       Month OnHand onOrder usage projected_On_Hand
   <int> <date>     <ord>  <dbl>   <dbl> <dbl>             <dbl>
 1     1 2020-04-08 Apr     2000       0    25              1975
 2     2 2020-04-09 Apr        0     200    50              2150
 3     3 2020-04-10 Apr        0       0    75              2125
 4     4 2020-04-11 Apr        0       0   100              2100
 5     5 2020-04-12 Apr        0     500   125              2575
 6     6 2020-04-13 Apr        0       0   150              2550
 7     7 2020-04-14 Apr        0       0   175              2525
 8     8 2020-04-15 Apr        0       0   200              2500
 9     9 2020-04-16 Apr        0       0   225              2475
10    10 2020-04-17 Apr        0     100   250              2550

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM