#sas
#sas
Вопрос:
Я хочу вывести последнее наблюдение в переменной, которая является целочисленной последовательностью в наборе данных sas.
У меня есть этот набор данных:
data have;
input seq var;
datalines;
1 7
2 6
3 3
1 1
2 4
1 8
2 9
3 1
4 8
;
run;
Я хотел бы добиться следующего:
seq var
3 3
2 4
4 8
Я тщательно искал свой ответ в Интернете, но ничего не смог найти.
Ответ №1:
Вы можете использовать метод прогнозирования. Это один из многих способов его записи.
data last;
set have end=eof;
if not eof then set have(firstobs=2 keep=seq rename=(seq=nseq));
if nseq eq 1 or eof then output;
drop nseq;
run;
Ответ №2:
Просто чтобы показать плавность подхода к прогнозированию — вы можете сделать то же самое с lag
, но для этого требуется почти в два раза больше строк кода:
data want(drop=prev_:);
set have end = eof;
prev_seq = lag(seq);
prev_var = lag(var);
if seq < prev_seq then do;
seq = prev_seq;
var = prev_var;
end;
if eof or seq = prev_seq;
run;