SAS:通过复制最后一行构造Do Until



我有截至2013年的年度数据,但我想使用该年,并将其复制到2014年、2015年,最终复制到2016年(无论我们有什么数据年份)。使用以下测试数据:

DATA TEST;
   INPUT YEAR Q1 Q2 Q3 Q4;
   DATALINES;
   2012 20 30 40 50
   2013 21 29 43 47
   ;
RUN;

我最终想要一个具有以下功能的数据集:

2012 20 30 40 50
2013 21 29 43 47
2014 21 29 43 47
2015 21 29 43 47
2016 21 29 43 47

这只是一个快速的例子,因为我的数据要大得多,也更复杂,但是否有一种快速的DO UNTILOUTPUT方法可以根据需要多次复制最后一行,并在每次迭代中生成YEAR+1?基本上,复制最后一行,直到YEAR等于文件中的最近一年。

您只需要检测数据的末尾。请使用END=选项,或者如果数据已分组,请使用LAST。BY组处理的标志。

data want ;
  set have end=eof;
  output;
  if eof then do year=year+1 to 2016;
    output;
  end;
run;

最新更新