【问题标题】:SAS: Construct Do Until by Copying Last RowSAS:通过复制最后一行来构建直到
【发布时间】:2015-12-04 13:00:51
【问题描述】:

我有截至 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 等于文件中的最新年份。

【问题讨论】:

    标签: copy sas iteration output do-loops


    【解决方案1】:

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

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

    【讨论】:

    • 谢谢你,@Tom。 OUTPUT 声明最初让我发疯,我无法做到恰到好处。这就是我需要的!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-12-11
    • 1970-01-01
    • 2021-12-27
    相关资源
    最近更新 更多