繁体   English   中英

SAS Proc sql中的此代码有什么问题

[英]What's wrong with this code in Proc sql in SAS

我试图运行以下代码,但它给了我一条错误消息。 请参阅以下内容。

%macro bktest(prod=);
proc sql;
create table &prod._pd_coh_seg as   
select distinct
ASOF_YYYYMM,
segment,
mean(rcpa_b2_pd_low),
mean(rcpa_b2_pd_high),
sum(rcpa_weight) as Count,
sum(annual_default_occurrence*rcpa_weight)/sum(rcpa_weight) as dr_ct,
sum(dp_pit*rcpa_weight)/sum(rcpa_weight) as pd_ct_pit,
sum(RCPA_B2_PD_TTC_SEG_FCTR*rcpa_weight)/sum(rcpa_weight) as pd_ct_ttc
from backtest.&prod._final
group by segment;
quit;

data &prod._pd_coh_seg;
set &prod._pd_coh_seg;
abs_diff_pit=abs(dr_ct-pd_ct_pit);
abs_diff_ttc=abs(dr_ct-pd_ct_ttc);
run;

proc sort data =&prod._pd_coh_seg;
by ASOF_YYYYMM segment;
quit;

proc sql;
create table &prod._pd_mad_rov as   
select distinct
segment,
mean(rcpa_b2_pd_low),
mean(rcpa_b2_pd_high),
count(*) as Count,
sum(abs_diff_pit)/count(abs_diff_pit) as mad_pit,
sum(abs_diff_ttc)/count(abs_diff_ttc) as mad_ttc,
sum(order)/count(abs_diff_pit) as breaks
from &prod._pd_coh_seg
group by segment;
quit;

%mend;

%bktest(prod=auto);
%bktest(prod=cred);
%bktest(prod=manu);
%bktest(prod=spec);

%macro bktest(prod=);
PROC EXPORT DATA= &prod._pd_mad_rov
            OUTFILE= "/ecm_dr/retail/other/zkt0jqm/2014Q3/pd_mad_rov.xlsx" 
            DBMS=XLSX REPLACE;
     SHEET="&prod."; 
RUN;
%mend;

%bktest(prod=auto);
%bktest(prod=spec);
%bktest(prod=manu);
%bktest(prod=cred);

错误消息是:

ERROR: The MEAN summary function requires a numeric argument.
ERROR: The MEAN summary function requires a numeric argument.
ERROR: The following columns were not found in the contributing tables: rcpa_b2_pd_high, rcpa_b2_pd_low.

我不知道哪里出了错。 如果删除rcpa_b2_pd_highrcpa_b2_pd_low的均值语句, rcpa_b2_pd_lowrcpa_b2_pd_high ,rcpa_b2_pd_low分组,则此问题将消失。 但是,我不确定这是否是正确的方法,因为这两个是比率百分比,不应在group语句中使用。 谁能帮我诊断这个问题? 非常感谢您的投入。

SP

问题出在第一个SQL语句中。

proc sql;

create table &prod._pd_coh_seg as   
select distinct
ASOF_YYYYMM,
segment,
mean(rcpa_b2_pd_low) as rcpa_b2_pd_low,
mean(rcpa_b2_pd_high) as rcpa_b2_pd_high,
sum(rcpa_weight) as Count,
sum(annual_default_occurrence*rcpa_weight)/sum(rcpa_weight) as dr_ct,
sum(dp_pit*rcpa_weight)/sum(rcpa_weight) as pd_ct_pit,
sum(RCPA_B2_PD_TTC_SEG_FCTR*rcpa_weight)/sum(rcpa_weight) as pd_ct_ttc
from backtest.&prod._final
group by segment;
quit;

发生这种情况是因为完成聚合后,新的聚合列会从sas中分配随机名称

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM