【问题标题】:SAS proc Freq & gchart display additional value's frequency/ barsSAS proc Freq & gchart 显示附加值的频率/条
【发布时间】:2014-03-30 18:35:16
【问题描述】:

这可能是一个奇怪的问题。我有一个数据集,其中包含 agreeneutraldisagree...等许多问题的数据。没有太多观察结果,因此对于某些问题,一个或多个选项的频率为 0,例如中性。当我运行proc freq 时,由于中性显示在该变量中,因此该表不包含中性行。我最终得到具有不同行数的表。我想知道是否有显示这些 0 频率行的选项。我还需要为相同的数据集运行proc gchart,并且我会遇到相同的问题,因为柱的数量不同。请帮助我。谢谢!

【问题讨论】:

  • 对于GCHART 方面的事情,PROC FREQ 的答案也可能会回答这个问题。如果没有,请提供一些您现在正在做的示例代码 - 以及您是否愿意接受SGPLOT,这可能更能处理这个问题。

标签: sas gchart


【解决方案1】:

这取决于您运行PROC FREQ 的准确程度。它有sparse 选项,告诉它在创建输出数据集时为表上的每个逻辑单元格创建一个值;通常,虽然您在交叉表中有一个缺少值(或零)的单元格,但如果将其输出到数据集(垂直,即 x 和 y 轴值的每个组合都放在一行中),那么这些行是离开了。 Sparse 确保不会发生这种情况;在更大的(n 维)交叉表中,它为每个变量的每个可能组合创建行,甚至是数据中不存在的组合。

但是,如果你只是在做

proc freq data=mydata;
tables myvar;
run;

这对您无济于事,因为 SAS 并没有什么可以继续确定应该在那里。

为此,您必须使用class 变量过程。 Proc Tabulate 就是这样的过程之一,在语法上与Proc Freq 相似(有点)。您需要在 proc 语句中使用 CLASSDATA,或者在 table 语句中使用 PRINTMISS。在前一种情况下,您不需要使用格式,我不相信。在后一种情况下(PRINTMISS),您需要为您的变量创建一个格式(如果您还没有),其中包含您想要显示的所有级别的数据(即使它只是一种身份格式,例如,将字符串格式化为相同的字符串),并在 proc 语句中指定 PRELOADFMT。详情请见this man page

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多