【问题标题】:SAS cumalitive/recursive addition of Column cells列单元格的 SAS 累积/递归加法
【发布时间】:2018-05-05 19:15:15
【问题描述】:

我有一个关于特定列的递归/累积添加的问题,例如:单击示例

如何在 SAS 代码中编写此代码,以生成关于列的累积加法。请帮我解决这个问题。

提前谢谢你

Example

【问题讨论】:

  • 你尝试了什么?

标签: sas


【解决方案1】:

使用 sum 语句

 data have;
 input val;
 datalines;
 1
 2
 3
 ;
 data want;
  set have;
  newval+val;
  run;

【讨论】:

【解决方案2】:

使用Retain 功能。

您可以重复使用以下代码作为任何迭代/累积计算的基础。

 data have;
 input A;
 datalines;
 1
 2
 3
 ;
 run;
 data want;
  set have;
  Retain B;
  /* If condition to initialize B only once, _N_ is the current row number */
  if _N_= 1  then B=0;
  B=B+A;
/* put statement will print the table in the log */
  put _all_;
  run;

输出:

 A=1 B=1 _N_=1
 A=2 B=3 _N_=2
 A=3 B=6 _N_=3

【讨论】:

  • 这也可以,但我必须有一个 else 声明。 0 是 B 的初始值,因此在第 1 行: A= 1, B=B+A (0+1), 第 2 行: A=2 , B=B+A ((0+1)+2) .如果没有初始 0 值,ale B 将是 。作为 .+1=.
猜你喜欢
  • 2013-12-25
  • 1970-01-01
  • 2012-07-18
  • 1970-01-01
  • 1970-01-01
  • 2020-05-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多