【问题标题】:What is the function of an ID statement in Proc means in SAS?Proc中ID语句的功能是什么意思在SAS中?
【发布时间】:2014-01-04 05:54:17
【问题描述】:

我正在将 SAS 代码复制到 R 代码中,我遇到了以下 SAS 代码 sn-p -

proc means data=A noprint;
by name date; 
id comp_no;
var price; 
id rep_dats act no;
output out= test(drop=_type_ _freq_)        
median=median n=num; 
run;

我知道'by'语句用于分组以提供该级别的统计信息。但是,“id”是做什么用的?为什么有两个“id”语句?我查看了 SAS 帮助,但我并没有真正理解它。我还在http://support.sas.com/documentation/cdl/en/proc/65145/HTML/default/viewer.htm#p19dfq16fqt1t3n1eroiabnn6r3s.htm 上查看了他们的示例。 但是没有例子说明 ID 的使用。

由于我无权访问 SAS,因此无法尝试此操作并查看输出的外观。 任何澄清都会对我有很大帮助。谢谢!

【问题讨论】:

    标签: r sas mean proc


    【解决方案1】:

    proc means 过程可以计算和显示数据集的简单汇总统计信息,并输出该汇总统计信息。默认情况下,它通过分析数据集中的每个数值变量来汇总数值变量(列)。

    通过在proc means 中使用带有by 的ID 语句,它将为每个组生成一个值。这个值是by 组内ID 中指定的first 变量的最大值。因此,如果您指定许多变量,例如id A B; 它将为该组输出 A 的唯一最大值。

    http://support.sas.com/documentation/cdl/en/proc/61895/HTML/default/viewer.htm#a000146733.htm

    顺便说一下,我不知道你的数据集是什么样子的,但你的proc means似乎只是在总结价格变量。

    例如,如果你有一个数据集:

                            Obs    sex     A      B    C     D
    
                             1      M      20    50    1    34
                             2      F     500    45    3    45
                             3      M     200    23    7    32
                             4      M     120    67    5    44
                             5      F     400    98    2    59
    

    然后

    proc means data=sorted;
    by sex;
    var A B;
    id D C;
    output out=means(drop =_type_ _freq_);
    run;
    

    将输出:

                              sex     D    C    _STAT_       A          B
    
                               F     59    2     N          2.000     2.0000
                               F     59    2     MIN      400.000    45.0000
                               F     59    2     MAX      500.000    98.0000
                               F     59    2     MEAN     450.000    71.5000
                               F     59    2     STD       70.711    37.4767
                               M     44    5     N          3.000     3.0000
                               M     44    5     MIN       20.000    23.0000
                               M     44    5     MAX      200.000    67.0000
                               M     44    5     MEAN     113.333    46.6667
                               M     44    5     STD       90.185    22.1886
    

    注意变量D中,59是F组中D的最大值,但C不是因为D是先指定的。 M 组的情况也类似,其中C 只是与D 的最大值位于同一行的数字。

    【讨论】:

    • 非常感谢!这很有帮助!
    【解决方案2】:

    它允许您在输出中添加除 class 和 var 语句中的列之外的列。如果 id 变量在每个类组合中都是恒定的,则这是有意义的;否则 sas 返回每个类组合中的最大值。见这里:

    http://support.sas.com/documentation/cdl/en/proc/61895/HTML/default/viewer.htm#a000146733.htm

    【讨论】:

    • 谢谢!我已经浏览了第二个链接,但我会检查第一个链接是否有帮助!
    • 第一个链接重定向到我相信的主页。
    猜你喜欢
    • 2016-06-07
    • 1970-01-01
    • 2011-08-15
    • 2011-11-18
    • 1970-01-01
    • 1970-01-01
    • 2020-07-13
    • 2018-05-25
    • 1970-01-01
    相关资源
    最近更新 更多