SAS:通过复制最后一行来构建“直到最后一行”

时间:2015-12-04 13:00:52

标签: copy sas iteration output do-loops

我的年度数据在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方法可以根据需要多次复制最后一行并生成{{ 1}}每次迭代?基本上,复制最后一行,直到YEAR+1等于存档的最新年份。

1 个答案:

答案 0 :(得分:3)

您只需要检测数据的结尾。使用END =选项或如果您的数据已分组使用LAST。来自BY集团处理的旗帜。

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