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

SAS: Construct Do Until by Copying Last Row

我有截至 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;