如何在 PROC 报告中垂直堆叠分析变量

  • 本文关键字:变量 垂直 PROC 报告 sas
  • 更新时间 :
  • 英文 :


我正在尝试在PROC REPORT中垂直堆叠多个变量。我与PROC REPORT绑定而不是表格或FREQ,因此使用REPORT的解决方案会更可取。

我已经测试了其他解决方案,但无法使用我的数据取得成功。

proc format library = library ;
   value AGE
      1 = '18 to 29'  
      2 = '30 to 45'  
      3 = '46 to 64'  
      4 = '65 and over'  
      9 = 'NA' ;
   value SEX
      1 = 'Male'  
      2 = 'Female'  
      9 = 'NA' ;
   value Q16F
      1 = 'EXCELLENT'  
      2 = 'VERY GOOD'  
      3 = 'GOOD'  
      4 = 'FAIR'  
      5 = 'POOR'  
      8 = 'DON''T KNOW'  
      9 = 'NA/REFUSED' ;
DATA CHSS2017_sashelp (keep = q16 sex age);
SET CHSS2017.CHSS2017_sashelp;
FORMAT       q16 q16f.;
FORMAT       sex SEX.;
FORMAT       age AGE.;
RUN;
proc report data = CHSS2017_sashelp nowindows headline;
columns sex n, (q16);
define sex / group;
define q16 / across;
run;

预期结果将是包含多个变量的堆叠 REPORT 表:预期产出

如果您对重复的标题/变量名称感到满意,那么您可以使用两个报告过程。请参阅下面的代码,我使用了示例 sas 数据并稍微自定义了格式:

proc format ;
   value AGE
      1-10 = '1 to 10'  
      11-12 = '11 to 12'  
      13-High = '13 and over'  
      ;
   value $SEXv
      'M' = 'Male'  
      'F' = 'Female'  
      ;
   value Q16F
      1 = 'EXCELLENT'  
      2 = 'VERY GOOD'  
      3 = 'GOOD'  
      4 = 'FAIR'  
      5 = 'POOR'  
      8 = 'DON''T KNOW'  
      9 = 'NA/REFUSED' ;
run;
%macro RandBetween(min, max);
   (&min + floor((1+&max-&min)*rand("uniform")))
%mend;
data class;
 set sashelp.class;
   q16 = %RandBetween(1, 9);
   FORMAT       q16 q16f.;
   FORMAT       sex $SEXv.;
   FORMAT       age AGE.;
run;
proc report data = class nowindows headline;
columns age n, (q16);
define age/ group;
define q16 / across;
run;
proc report data = class nowindows headline;
columns sex n, (q16);
define sex / group;
define q16 / across;
run;

宏 RandBetween 仅适用于此代码,您不必使用它

最新更新