标题: 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数据步问题 是的,偶在国内