SAS中的条件/分区运行总计

时间:2017-06-13 12:58:30

标签: sas

我正在尝试创建一个名为" new Value"这是现有列的运行总计 - 由多个标识符分区。

  

x = 1到10

     

_i_member读取其中包含24个项目的数组{members}

     

_i_simul是成员数组中每个项目的实际成员数

以下是成员的样子:

array members {24} _temporary_ (5 6 8 10 12 15 20 25 30 40 50 
                                        60 70 80 90 100 125 150 175 200 250 300 400 500)

我尝试使用数据步骤:

data simulation_members3; 
        set claims.new_simulation_members;
        do until (last._i_member);
        by _i_member;
        New_Value + Value ;
end;
run;

但它不起作用,因为表格没有按_i_member排序(当x = 2,3,..,24时,_i_member = 1重复) 计算的第一个运行总计应该是x = 1和_i_member = 1的总和,直到它到达最后一个_i_simul值(成员数组的第一个值为5,成员数组的第二个值为6,等等)。 )

以下是我当前的表格(名为" claims.new_simulation_members")

     x |_i_member|_i_simul|     Value      | New Value
    ---|---------|--------|----------------|-----
     1 |      1  |   1    |     10         | 10
     1 |      1  |   2    |     15         | 25 = 10 + 15
     1 |      1  |   3    |     18         | 43 = 10 + 15 + 18  
     1 |      1  |   4    |     6          | 49 = 10+15+18+6
     1 |      1  |   5    |     8          | 57 = 10+15+18+6+8
     1 |      2  |   1    |     6          | 6
     1 |      2  |   2    |     7          | 14 = 6+7
   ... |    ...  | ...    |   ...          | ...   
    10 |      1  |   1    |     4          | 4
    10 |      1  |   2    |     5          | 9 = 4+5

1 个答案:

答案 0 :(得分:0)

尝试使用此示例

data test;
input member value;
datalines;
1 3
1 4
1 3
2 1
2 2
2 3
;
run;

proc sort data=test out=test_sorted;
by member;
run;

data test_sorted1;
    retain new_value;
    set test_sorted;
    by member;
    if first.member then new_value = value;
    else new_value + value;
run;