标题: 请教一个数据处理问题 [打印本页] 作者: shiyiming 时间: 2013-7-5 15:28 标题: 请教一个数据处理问题 比如有一个测试数据集如下:
id seq var value
10 1 A
10 2 A
10 3 A
10 4 B 100
10 5 B 200
10 6 B 300
10 7 A
10 8 A
10 9 B 20
10 10 B 30
我想输出如下:
id seq var value
10 1 A
10 2 A
10 3 A
10 6 B 600
10 7 A
10 8 A
10 10 B 50
逻辑就是:如果var=A,则全部输出,如果var=B,则计算累加后输出最后一条记录,请问如何实现?多谢大侠帮助!作者: shiyiming 时间: 2013-7-5 15:46 标题: Re: 请教一个数据处理问题 [code:sbe7khq9]data raw;
infile datalines missover;
input id seq var $ value;
datalines;
10 1 A
10 2 A
10 3 A
10 4 B 100
10 5 B 200
10 6 B 300
10 7 A
10 8 A
10 9 B 20
10 10 B 30
;
data out(drop=sum);
sum=0;
do _n_=1 by 1 until(last.var);
set raw;
by var notsorted;
sum+value;
if var='A' then output;
end;
if var='B' then do;
value=sum; output;
end;
run;[/code:sbe7khq9]作者: shiyiming 时间: 2013-7-5 16:52 标题: Re: 请教一个数据处理问题 data out;
retain sum;
set raw;
by var notsorted;
if first.var then sum=value;
else sum=sum+value;
if var='A' then output;
if last.var then if var='B' then output;
run;