限制Proc意味着输出仅为完成行

时间:2014-06-09 18:43:00

标签: sas

我有一个简单的proc意味着程序,我希望将输出限制为仅完成行。

   data test_dat;
        input group $ subgroup $ time variable1 variable2;
    cards;
    A xxxx 1 100 2.50
    A xxxx 2 200 2.50
    A xxxx 3 300 2.50 
    A xxxx 4 100 3.00
    A zzzz 1 500 1.00
    A zzzz 2 450 1.00
    A zzzz 3 700 1.50
    A zzzz 4 600 1.50
    B yyyy 1 200 4.00
    B yyyy 2 100 5.00
    B yyyy 3 300 4.00
    B yyyy 4 250 5.00
    ;
    run;

    proc means data=test_dat mean sum;
        class group subgroup;
        var variable2 variable1;
        output out=stuffout(drop=_type_ _freq_ dropme ohheidropme2plz) mean=variable2_mean dropme sum=ohheidropme2plz variable1_sum;
    run;

默认情况下,当我只想要三行(行7-9)时,proc表示给我9行输出。我知道我可以做另一个数据步骤来消除这些行,但要知道必须有一个更优雅的方式。 (ps - 它不会总是7-9行,因此不能作为一般解决方案)。

由于

1 个答案:

答案 0 :(得分:5)

看起来你正在寻找的是proc意味着nway选项。见这里:http://support.sas.com/documentation/cdl/en/proc/61895/HTML/default/viewer.htm#a000146729.htm

proc means data=test_dat mean sum nway;
        class group subgroup;
        var variable2 variable1;
        output out=stuffout(drop=_type_ _freq_ dropme ohheidropme2plz) mean=variable2_mean dropme sum=ohheidropme2plz variable1_sum;
    run;

您还可以使用类型或方式语句来获得相同的结果。

在这里,您可以使用ways 2;,即显示类变量的可能的所有组合。关键字nway只是指定ways = n,其中n是你拥有的类变量的数量。默认情况下,proc表示包含表示总计的所有可能行(例如,组变量的给定值的总和和平均值,与子组变量无关)。 Ways 2指定您只对那些具有两个类变量的行感兴趣,在这种情况下是所有类变量。