SAS - Использование оператора сохранения - PullRequest
0 голосов
/ 19 февраля 2011

У меня есть набор данных с идентификаторами, датами и суммами. Каждый идентификатор может иметь несколько строк в зависимости от суммы транзакции и количества выполненных транзакций. Мне нужно использовать оператор сохранения, чтобы найти разницу во времени между первым изменением суммы. Я знаю, что мне нужно сохранить все 3 переменные, но я не уверен, как это сделать? Любая помощь будет великолепна

1 Ответ

3 голосов
/ 20 февраля 2011

Вот базовое использование оператора сохранения.Я не могу точно сказать, что вам нужно из вашего описания.Может быть, вам нужно 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
...