我有截至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 UNTIL
和OUTPUT
方法可以根据需要多次复制最后一行,并在每次迭代中生成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;