代码之家  ›  专栏  ›  技术社区  ›  NewUsr_stat

按ID和变量求和

sas
  •  0
  • NewUsr_stat  · 技术社区  · 1 年前

    如何按ID对一组变量求和?

    假设有以下内容:

    data DB;
      input ID :$20. Value1 Value2 Value3; 
    cards;
    0001 33    .     .
    0001  .   22     .
    0001  .    .     .
    0001  .    .     6
    0002  .    32    .
    0002  .    .     4
    0003  .    2     90
    0003  3    .     .
    ;
    
    

    有没有办法得到以下内容?

    data DB1;
      input ID :$20. Value1 Value2 Value3  Total; 
    cards;
    0001 33    .     .    61
    0001  .   22     .    .
    0001  .    .     .    .
    0001  .    .     6    .
    0002  .    32    .   36
    0002  .    .     4    .
    0003  .    2     90  95
    0003  3    .     .    .
    ;
    
    

    总和应放在每个ID的第一个出现/位置。

    提前感谢

    1 回复  |  直到 1 年前
        1
  •  1
  •   PeterClemmensen    1 年前

    试试这个

    data db1;
       do until(last.ID);
          set DB;
          by ID;
          if first.ID then Total = 0;
          Total + sum(of Value:);
       end;
    
       do until(last.ID);
          set DB;
          by ID;
          if not first.ID then Total = .;
          output;
       end;
    run;
    

    结果:

    ID    Value1  Value2  Value3  Total
    0001  33      .       .       61
    0001  .       22      .       .
    0001  .       .       .       .
    0001  .       .       6       .
    0002  .       32      .       36
    0002  .       .       4       .
    0003  .       2       90       95
    0003  3       .       .       .
    
    推荐文章