простые способы создания сводной переменной в SAS - PullRequest
1 голос
/ 02 июня 2009

Я ищу способ создания сводной переменной в SAS, которая будет автоматически добавлять каждое наблюдение строки, пока не будет выполнено условие. Мне нужно было бы иметь возможность запускать, останавливать и сбрасывать эту переменную при необходимости.

Большое спасибо.

Ответы [ 2 ]

3 голосов
/ 03 июня 2009

Используйте Сохранить!

data test;
set test;
retain VarSummary;
VarSummary+YourVar;
if condition then VarSummary=SummatElse;
run;

Надеюсь, это имеет смысл!

0 голосов
/ 04 июня 2009

Если вы собираетесь использовать утверждение типа

VarSummary + 1  ; 

OR

VarSummary + <expression> ;

тогда вам на самом деле не нужен оператор RETAIN.

Кроме того, если вы используете оператор BY в DATA STEP, у вас есть доступ к переменным FIRST и LAST (данные должны быть отсортированы по переменной BY). FIRST и LAST имеют значение 1 или 0. Когда переменная BY находится на первом значении FIRST. = 1 и когда оно находится на последнем значении LAST. = 1. Они оба могут быть равны 1, когда имеется только 1 запись byVariable, и они могут быть равны 0, когда существует более 2 записей byVariable (когда в средних записях).

FIRST и LAST могут помочь определить, когда нужно сбрасывать переменные RETAINed. (FIRST и LAST будут в PDV, но не будут записаны в выходной набор данных, поэтому нет необходимости удалять их).

Пример

(Результат этого примера, вероятно, будет сделан с помощью PROC, но я надеюсь, что это демонстрирует, как можно использовать FIRST и LAST)

proc sort data=sasuser.laguardia out=work.dest;
 by dest ;
run ;

data work.destination_summary (keep=dest dest_count total_count) ;
 set work.dest ;
 by dest ;

 total_count + 1 ;

 if first.dest then dest_count = 1 ;
 if not first.dest and not last.dest then dest_count + 1 ;
 if last.dest then do ;
  dest_count + 1 ;
  output ;
 end ;
run ;

proc print data=work.destination_summary label noobs ;
 var dest dest_count total_count;
 label Dest="Destination"
   dest_count="Count" 
   total_count= "Total Count";
run ;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...