在基本SAS中运行Proc报告时,RBreak后不会为计算变量生成汇总值
我想按Proc report创建一个摘要报告,它应该有以下列在基本SAS中运行Proc报告时,RBreak后不会为计算变量生成汇总值,sas,Sas,我想按Proc report创建一个摘要报告,它应该有以下列 Probability, Nbr_of_Optys, Total_Media_Value & Tot_Forecast which is computed by the product of probability & Total_Media_Value. 我编写了以下代码: proc report data = Cs1.olympics headline;
Probability, Nbr_of_Optys, Total_Media_Value & Tot_Forecast which is computed by the product of probability & Total_Media_Value.
我编写了以下代码:
proc report data = Cs1.olympics headline;
column Probability Stage (n) Total_Media_Value Tot_Forecast;
where Probability > 0;
define Probability/group Descending 'Probability';
define Stage/group noprint;
define n / format = comma6. 'Nbr_of_Optys';
define Total_Media_Value/analysis format = dollar25. 'Tot_Budget';
define Tot_Forecast/computed format = dollar25.;
compute Tot_Forecast;
Tot_Forecast = (Total_Media_Value.sum*Probability)/100;
endcomp;
rbreak after / summarize ol ul skip;
run;
运行报告后,将显示一条消息,在执行该报告后面的操作后,将生成缺少的值
Probability Nbr_of_Optys Tot_Budget Tot_Forecast
100 7 $171,675,000 $171,675,000
90 4 $205,000,000 $184,500,000
70 8 $264,000,000 $184,800,000
50 20 $127,040,000 $63,520,000
30 3 $2,450,000 $735,000
10 319 $333,729,670 $333,372,967
361 $1,103,894,670
我没有得到Tot_Forecast的任何汇总值您的问题是,因为
rbreak
在报告末尾执行(它应该执行),所以它没有一个Probability
的值插入到该计算中。请注意,RBREAK
中的PROC REPORT
为您提供:
基于相应计算块中的代码的计算结果
只能使用分组值。所以这里可以使用概率。sum,除了它不是一个分析变量,所以它没有和;您必须添加一个单独的变量,其中包含概率,以用作分析-但即使这样,它也可能无法满足您的需要
我想,你想要的是总量预测的总和。但不幸的是,这不是你得到的。您需要做的是帮助RBREAK
退出:
proc report data = olympics headline;
column Probability Stage (n) Total_Media_Value Tot_Forecast ;
where Probability > 0;
define Probability/group Descending 'Probability';
define Stage/group noprint;
define n / format = comma6. 'Nbr_of_Optys';
define Total_Media_Value/analysis format = dollar25. 'Tot_Budget';
define Tot_Forecast/computed format = dollar25.;
compute tot_forecast;
if upcase (_BREAK_) = ' ' then do;
Tot_Forecast = (Total_Media_Value.sum*Probability)/100;
tot_forecast_summer=sum(tot_forecast_summer,tot_Forecast);
end;
else do;
tot_forecast=tot_forecast_Summer;
end;
endcomp;
rbreak after / summarize ol ul skip;
run;
我在这里所做的是创建一个求和变量tot\u forecast\u Summer
,它对tot\u forecast
值求和。然后我在else
案例中使用它(从技术上讲,当\u BREAK=“u rbbreak”
时,但为了简单起见,我只是将empty与else进行比较)。在这里,当中断处于打开状态时,我们在compute
语句中做出不同的选择:我们将computed列设置为computed sum。这给了我们:
Probability Nbr_of_Optys Tot_Budget Tot_Forecast
100 1 $171,675,000 $171,675,000
90 1 $205,000,000 $184,500,000
70 1 $264,000,000 $184,800,000
50 1 $127,040,000 $63,520,000
30 1 $2,450,000 $735,000
10 1 $333,729,670 $33,372,967
6 $1,103,894,670 $638,602,967