SAS中文论坛

标题: 请教一个数据处理问题 [打印本页]

作者: 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;

proc print;run;




欢迎光临 SAS中文论坛 (http://www.mysas.net/forum/) Powered by Discuz! X3.2