【问题标题】:How to calculate cumulative product in SAS?如何计算SAS中的累积产品?
【发布时间】:2021-03-01 17:07:10
【问题描述】:

我需要创建一个变量,它采用所有先前值的值的乘积,并包括当前 obs 中的值。

data temp;
input time cond_prob;
datalines;    
    1 1
    2 0.2
    3 0.3
    4 0.4
    5 0.6    
;
run;

最终数据应该是:

1 1
2 0.2 (1*0.2)
3 0.06 (0.2* 0.3)
4 0.024 (0.06 * 0.4
5 0.0144 (0.024 *0.6)

这似乎是一个简单的代码,但我无法让它工作。我可以做累积和,但使用相同的逻辑时累积乘积不起作用。

【问题讨论】:

  • 这属于stackoverflow。答案是在数据步中直接应用“保留”语句。
  • 以后请包含您尝试过的代码。

标签: sas


【解决方案1】:

使用 RETAIN 功能。 对于第一条记录,我将其设置为 1,因为任何乘以 1 的值都将保持不变。

data want;
set temp;

retain cum_product 1;

cum_product = cond_prob * cum_product;

run;

【讨论】:

  • 非常感谢 Reeza。这太棒了!
猜你喜欢
  • 2020-11-21
  • 2021-07-21
  • 1970-01-01
  • 1970-01-01
  • 2019-03-30
  • 1970-01-01
  • 2013-05-06
  • 2016-12-27
  • 1970-01-01
相关资源
最近更新 更多