SAS中文论坛

标题: SAS数据步问题 [打印本页]

作者: shiyiming    时间: 2010-3-5 22:49
标题: SAS数据步问题
数据:
program type code amount
A1 D 1001 100
A1 C 1001 100
A1 D 1002 50
A2 D 1001 100
A2 D 1002 50
A3 C 2000 50
A3 C 1001 100
A3 D 1001 100
A4 D 1002 50
A4 C 1001 100
A4 D 1001 100

……
其中,A1、A2、A3等是活动的名称,code 1001,1002,2000代表费用类型,type D表示收费,C表示退还,amount则是金额
如果相同的code,type D,C同时出现,则金额相等
希望得到,删除相同费用类型,type D,C同时出现的所有观测,在一个program下,最终收费大于0的情况下,其中type为D的观测,如上述数据,处理后应为:
A1 D 1002 50
A2 D 1001 100
A2 D 1002 50
A4 D 1002 50
……

谢谢~
作者: shiyiming    时间: 2010-3-6 09:32
标题: Re: SAS数据步问题
[code:f08bivuc]data raw;
        input program $ type $ code amount;
datalines;
A1 D 1001 100
A1 C 1001 100
A1 D 1002 50
A2 D 1001 100
A2 D 1002 50
A3 C 2000 50
A3 C 1001 100
A3 D 1001 100
A4 D 1002 50
A4 C 1001 100
A4 D 1001 100
;

proc sort data=raw out=temp;
        by program code;
run;

data temp(drop=sum_amount);
        sum_amount=0;
        do _n_=1 by 1 until(last.code);
                set temp;
                by program code;
                sum_amount+ifn(upcase(type)='C',-amount,amount);
        end;
        do _n_=1 to _n_;
                set temp;
                if sum_amount>0 then output;
        end;
run;[/code:f08bivuc]
超市收供货商的促销费?
作者: shiyiming    时间: 2010-3-6 12:03
标题: Re: SAS数据步问题
谢谢:)
作者: shiyiming    时间: 2010-3-6 19:53
标题: Re: SAS数据步问题
是金融企业营销活动的费用
作者: shiyiming    时间: 2010-3-7 13:55
标题: Re: SAS数据步问题
Flora在国内么?要是这样那国内的金融企业真的是有进步了呢 <!-- s:lol: --><img src="{SMILIES_PATH}/icon_lol.gif" alt=":lol:" title="Laughing" /><!-- s:lol: -->
作者: shiyiming    时间: 2010-3-7 14:14
标题: Re: SAS数据步问题
是的,偶在国内




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