【问题标题】:easy ways to create a summary variable in SAS在 SAS 中创建汇总变量的简单方法
【发布时间】:2009-06-02 18:47:26
【问题描述】:

我正在寻找一种在 SAS 中创建汇总变量的方法,该变量将自动添加每行观察,直到满足条件。如果需要,我需要能够启动和停止并重置此变量。

非常感谢。

【问题讨论】:

    标签: variables sas summary


    【解决方案1】:

    使用保留!

    data test;
    set test;
    retain VarSummary;
    VarSummary+YourVar;
    if condition then VarSummary=SummatElse;
    run;
    

    希望这是有道理的!

    【讨论】:

      【解决方案2】:

      如果你要使用这样的语句

      VarSummary + 1  ; 
      

      VarSummary + <expression> ;
      

      那么您实际上不需要 RETAIN 语句。

      此外,如果您在 DATA STEP 中使用 BY 语句,您可以访问变量 FIRST 和 LAST(数据必须按 BY 变量排序)。 FIRST 和 LAST 的值为 1 或 0。当 BY 变量位于第一个值 FIRST 时。 = 1 并且当它位于最后一个值 LAST 时。 = 1。当只有1个byVariable记录时它们都可以等于1,当有2个以上的byVariable记录时它们都可以等于0(当在中间记录时)。

      FIRST 和 LAST 可以帮助确定何时重置 RETAINed 变量。 (FIRST 和 LAST 将在 PDV 中,但不会写入输出数据集,因此无需 DROP)。

      例子

      (这个例子的结果可能会用一个PROC来完成,但我希望这能说明如何使用FIRST和LAST)

      proc sort data=sasuser.laguardia out=work.dest;
       by dest ;
      run ;
      
      data work.destination_summary (keep=dest dest_count total_count) ;
       set work.dest ;
       by dest ;
      
       total_count + 1 ;
      
       if first.dest then dest_count = 1 ;
       if not first.dest and not last.dest then dest_count + 1 ;
       if last.dest then do ;
        dest_count + 1 ;
        output ;
       end ;
      run ;
      
      proc print data=work.destination_summary label noobs ;
       var dest dest_count total_count;
       label Dest="Destination"
         dest_count="Count" 
         total_count= "Total Count";
      run ;
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-02-13
        • 1970-01-01
        • 2019-05-11
        • 2023-04-03
        • 1970-01-01
        • 2011-02-02
        相关资源
        最近更新 更多