SAS:输出几个按组的最后一个值

时间:2016-08-25 12:41:37

标签: sas

我想输出变量pr的最后一个值。子组到SAS数据集,最好只需几步。下面的代码可以做到这一点,但是我希望在一个步骤a by variable; if last.variable then output;中完成它,就像只有1个副变量的情况一样。

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;

只有1个副变量,可以组合标记为a)和b)的两个步骤。是否可以使用多个副组?

1 个答案:

答案 0 :(得分:1)

在数据步骤a)中添加条件if lst.firm then output two2

最终代码如下:

data two1 two2;
   set two;
   by year firm;
   retain case_id;
   if FIRST.year OR first.firm then case_id + 1;
   if last.firm then output two2;
   output two1;
run;