data def;
Создайте набор данных с именем DEF
(который будет храниться в библиотеке по умолчанию WORK
) ;
set abc;
получите ввод от набор данных ABC
(который sas будет искать в библиотеке по умолчанию WORK
) Это автоматически сгенерирует al oop по наблюдениям (1) ;
by id;
добавить временное переменные (2) first.id
и last.id
, чтобы указать, является ли это первым / последним наблюдением с этим id
(3) ;
if last.id;
Все утверждения ниже, как а также неявный оператор output;
, будет применяться только к последнему наблюдению каждого id
. Это эквивалентно if not last.id then delete;
. ;
run;
Скомпилируйте вышеуказанное и запустите ;
(1) На этапе данных SAS вы должны (почти) никогда не пишите что-то вроде
read file;
while not eof;
do some stuf;
read file;
end;
Это автоматизировано операторами set
и merge
.
(2) Временные переменные существуют в «программном векторе» (т.е. входят в область действия набора данных), но не записываются в набор выходных данных.
(3) Слово наблюдение на жаргоне SAS совпадает с строка на жаргоне базы данных. Разница с записью в том, что таблица sas, как и база данных, знает свою собственную структуру. Без этого оператор by
и многие другие возможности языка не могли бы существовать.