抑制"频率" PROC FREQ中的文字

时间:2015-01-28 09:50:08

标签: sas output

如何摆脱红圈内的方框

enter image description here

代码:

data mydata;
input x y;
datalines;
    1 2
    3 4
    1 5
    3 2
;
run;

proc freq data=mydata;
    tables x*y /nopercent norow nocol;
run;

3 个答案:

答案 0 :(得分:2)

data mydata;
input x y;
datalines;
    1 2
    3 4
    1 5
    3 2
;
run;

/*Write new template to work folder */
ods path work.templat(update) sashelp.tmplmst(read);

/*Remove the "Frequency" header from the template */
proc template;
  edit Base.Freq.CrossTabFreqs;
    edit frequency;
      header="";
    end;
  end;
run;

proc freq data=mydata;
    tables x*y /nopercent norow nocol;
run;

答案 1 :(得分:2)

与SAS一样,渴望结果有多条路径。

如果您愿意离开proc freq,可以使用proc tabulate获得所需的输出。这提供了一种更简单(更简洁)的解决方案,并且不需要挖掘冗长且经常令人困惑的proc template文档。

proc tabulate data = mydata;
    /* Specify the variables to investigate */
    class x y; 
    table
        /* Put x in the rows suppress its title and add a total row */
        x = "" all = "Total", 
        /* Put y in the columns, request a total, request frequency count*/
        (y all = "Total") * n = "" / 
            /* Put "x" in the top left box */
            box = "x" 
            /* Put 0 instead of missing */
            misstext = "0"; 
run;

答案 2 :(得分:1)

我知道如何执行此操作的唯一方法是编辑PROC FREQ模板。从9.3左右开始,PROC FREQ已经通过PROC TEMPLATE重写为基本表格,这很好,因为它可以让我们编辑它的几乎所有方面。

我所做的是右键单击显示管理器中的结果树标题 - 如下所示: Results

然后选择&#34;模板&#34;。这将打开模板列表,其中包括您已安装的所有模板(样式模板和表模板 - 大多数PROC都有一个表模板,尽管msot不会像PROC FREQ那样为您提供尽可能多的控制权。)< / p>

然后导航到Sashelp.Tmplmst(这是大多数预安装模板的主要模板存储),打开Base,然后打开Freq。这将为您提供组成PROC FREQ的表格模板列表。

在您的情况下,您想要打开CrossTabFreqs,这是您正在制作的(交叉表)。您可以通过运行ods trace on;然后运行代码来识别这一点;它会在日志中告诉你它所使用的模板名称是什么。

打开它并将模板浏览器的内容复制到剪贴板,然后粘贴到新窗口中。我们将对其进行修改,将其保存在临时位置,然后使用它。

将此行添加到程序的顶部:

ods path work.templat(update) sashelp.tmplmst(read);

这告诉SAS两件事:首先,当我们更新或写入模板商店时,在work中执行此操作;和两个,首先查看work然后在sashelp中查看模板。这样,当我们创建新的CrossTabFreqs模板时,它将来自work

现在,查看程序中定义Frequency块的位置。这是您想要修改的内容,因为这是SAS的说明,告诉它在显示频率时打印什么(而不是百分比或诸如此类)。它将如下:

  define Frequency;                                                       
     header = "Frequency";                                                
     format = BEST7.;                                                     
     label = "Frequency Count";                                           
     print;                                                               
     data_format_override;                                                
  end;    

您想要删除header。您可以使用以下两种方法之一:完全删除标题行,或者我的首选选项,将其更改为

  define Frequency;                                                       
     header = " ";                                                
     format = BEST7.;                                                     
     label = "Frequency Count";                                           
     print;                                                               
     data_format_override;                                                
  end;    

然后运行整个程序(包括ods path语句)。现在,当您在此SAS会话中使用PROC FREQ时,频率表标题中将没有文本。