我正在尝试创建一个名为" 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
答案 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;