在基本SAS中运行Proc报告时,RBreak后不会为计算变量生成汇总值

在基本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;

我想按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;                                                                                            
   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