【问题标题】:SAS: How to output the last observation in a sequence of a SAS data setSAS:如何输出 SAS 数据集序列中的最后一个观察值
【发布时间】:2016-10-18 17:18:00
【问题描述】:

我想在变量中输出最后一个观察值,该变量是 sas 数据集中的整数序列。

我有这个数据集:

data have;
input seq var;
datalines;
1 7 
2 6 
3 3 
1 1 
2 4
1 8
2 9
3 1
4 8
;
run;

我想实现以下目标:

seq var
3   3
2   4 
4   8

我已经在网上彻底搜索了我的答案,但找不到任何东西。

【问题讨论】:

    标签: sas


    【解决方案1】:

    您可以使用前瞻技术。这是编写它的众多方法之一。

    data last;
       set have end=eof;
       if not eof then set have(firstobs=2 keep=seq rename=(seq=nseq));
       if nseq eq 1 or eof then output;
       drop nseq;
       run;
    

    【讨论】:

      【解决方案2】:

      只是为了说明前瞻方法的巧妙性 - 您可以使用 lag 做同样的事情,但它需要的代码行数几乎是原来的两倍:

      data want(drop=prev_:);
        set have end = eof;
        prev_seq = lag(seq);
        prev_var = lag(var);
        if seq < prev_seq then do;
          seq = prev_seq;
          var = prev_var;
        end;
        if eof or seq = prev_seq;
      run;
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-04-02
        • 2013-04-16
        • 1970-01-01
        • 2013-04-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多