dplyr:计算产品补货天数

问题描述 投票:1回答:2

我正在研究一个数据集,在该数据集中,我需要计算零售商店从短缺中补充一些产品所需的时间,这是最简单形式的数据集的快速视图:

enter image description here

Date <- c("2019-1-1","2019-1-2","2019-1-3","2019-1-4","2019-1-5","2019-1-6","2019-1-7","2019-1-8")
Product <- rep("Product A",8)
Net_Available_Qty <- c(-2,-2,10,8,-5,-6,-7,0)
sample_df <- data.frame(Date,Product,Net_Available_Qty)

当Net_Available_Qty变为负数时,表示存在短缺。当它返回到0或正数量时,表示供应已恢复。我需要计算的是我们第一次看到短缺与恢复之间的间隔时间。在这种情况下,对于第一个短缺,需要2天才能恢复,而对于第二个短缺,则需要3天才能恢复。

tidyverse解决方案将非常受欢迎。

r dplyr tidyverse duration
2个回答
2
投票

我希望其他人找到更清洁的解决方案。但这会产生diffDate,它指定从负数变为正数/零开始的日期差。


0
投票

@ Schilker使用rle有一个好主意。我以他的答案为基础,并提供了一个简短的版本,包括使用cumsum

© www.soinside.com 2019 - 2024. All rights reserved.