如何计算三年销量中点对应的时间占比?SAS数据集处理
计算销量中点对应的时间点(SAS实现)
我来帮你搞定这个计算三年销量中点时间的需求~ 核心思路是先算出总销量的一半,再判断这个中点落在哪个年度的销量区间里,最后根据区间占比计算对应的时间值。
实现逻辑拆解
- 第一步:计算总销量,把三年的销量相加得到
total = one + two + three - 第二步:确定销量中点,
half = total / 2,这就是我们要找的累计销量目标 - 第三步:分区间计算时间:
- 如果中点≤第一年销量:时间 = 中点 / 第一年销量(比如第一年卖20,中点是10,对应时间就是0.5年)
- 如果中点在第一年和第二年之间:时间 = 1 + (中点 - 第一年销量)/第二年销量(第一年用了1年,剩下的销量在第二年里的占比就是对应的时间增量)
- 如果中点在第二年和第三年之间:时间 = 2 + (中点 - 第一年销量 - 第二年销量)/第三年销量(前两年用了2年,剩下的销量在第三年里的占比就是时间增量)
完整SAS代码
data test; set test; total = one + two + three; half = total / 2; /* 计算中点对应的时间点 */ if half <= one then average = half / one; else if half <= one + two then average = 1 + (half - one)/two; else average = 2 + (half - one - two)/three; /* 若不需要中间变量,可删除以下语句注释 */ /* drop total half; */ run;
验证示例结果
用你给出的测试数据验证逻辑:
- 第四行数据
10 10 10:总销量30,中点15。落在第一年和第二年之间,计算得时间=1 + (15-10)/10 = 1.5,和示例一致。 - 第三行数据
10 30 50:总销量90,中点45。落在第二年和第三年之间,计算得时间=2 + (45-40)/50 = 2.1,和示例一致。 - 第一行数据
10 20 30:总销量60,中点30。刚好等于前两年总销量,计算得时间=1 + (30-10)/20 = 2,和示例一致。
(注:你提供的第二行示例结果1.5和逻辑计算的≈1.83不符,大概率是笔误,上述逻辑计算的结果才是符合销量中点时间的正确值哦)
内容的提问来源于stack exchange,提问作者78282219
相关产品推荐
相关产品推荐

