Я хочу вывести последнее значение переменной pr. подгруппы к набору данных SAS, предпочтительно всего за несколько этапов. Код ниже делает это, но я надеялся сделать это за один шаг a la by variable; if last.variable then output;
, как и в случае с 1-мя переменными.SAS: вывести последнее значение по нескольким группам
data two;
input year firm price;
cards;
1 1 48
1 1 45
2 2 50
1 2 42
2 1 41
2 2 51
2 1 52
1 1 43
1 2 52;
run;
proc sort data = two;by year firm;run;
/* a) Create id across both sub-groups */
data two1;
set two;
by year firm;
retain case_id;
if FIRST.year OR first.firm then case_id + 1;
run;
/* b) Use id to output last values across both by-groups */
data two2;
set two1;
by case_id;
if last.case_id then output;
run;
proc print data = two1;run;
proc print data = two2;run;
С помощью всего одной переменной можно выполнить два шага, обозначенные а) и б). Возможно ли это с несколькими группами?
Обратите внимание, что первая/последняя запись для внешней группы всегда также первый/последний запись на одной из внутренних групп. Поэтому 'first.year OR first.firm' можно свести к' first.firm'. – Tom