SAS - 使用retain语句

时间:2011-02-19 08:27:23

标签: sas retain

我有一个包含ID,日期和金额的数据集。每个id可能有几行,具体取决于事务数量和执行的事务数。我需要使用retain语句来查找第一次更改金额之间的时间差。我知道我需要保留所有3个变量,但我不确定如何解决这个问题?任何帮助都会很棒

1 个答案:

答案 0 :(得分:3)

这是retain语句的基本用法。我无法从你的描述中确切地说出你需要什么。也许你需要retain第二个变量,然后使用if ... then ... else ...(日期匹配,然后....,否则....)无论如何,也许这会让你开始......

 DATA in;
    INPUT id var1 ;
    DATALINES;
      1  12   
      1  24   
      1  26   
      2  20   
      2  25   
      2  11  
 ;

 DATA out (drop=var1_lag);
   set in; 
   by id; 
   if first.id then diff=.;
   else             diff = var1 - var1_lag;
   var1_lag = var1;
   retain var1_lag;

 PROC PRINT data=out; 
 RUN; 

输出:

 Obs    id    var1    diff

  1      1     12        .
  2      1     24       12
  3      1     26        2
  4      2     20        .
  5      2     25        5
  6      2     11      -14