SAS中Proc语句中ID语句的功能是什么?

RHe*_*elp 3 r sas mean proc

我正在努力将SAS代码复制到R代码中,我遇到了以下SAS代码片段 -

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;
Run Code Online (Sandbox Code Playgroud)

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

因为我无法访问SAS,所以我无法尝试这一点,看看输出是怎样的.任何澄清对我都有很大帮助.谢谢!

Yic*_*ung 6

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

通过使用ID语句byproc means会产生每组一个值.这一个值是组中ID中指定的第一个变量的最大值by.因此,如果您指定了许多变量,例如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
Run Code Online (Sandbox Code Playgroud)

然后

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

将输出:

                          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
Run Code Online (Sandbox Code Playgroud)

请注意,在变量中D,59是F组中D的最大值,但C不是因为首先指定了D. 对于M组来说也是类似的情况,其中C只是与最大值在同一行上的数字D.