我有一个简单的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;
Run Code Online (Sandbox Code Playgroud)
默认情况下,当我只想要三行(行7-9)时,proc表示给我9行输出.我知道我可以做另一个数据步骤来消除这些行,但要知道必须有一个更优雅的方式.(ps - 它不会总是7-9行,因此不能作为一般解决方案).
谢谢
看起来你正在寻找的是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;
Run Code Online (Sandbox Code Playgroud)
您还可以使用types或ways语句来获得相同的结果.
在这里你可以使用ways 2;,也就是说显示你的类变量可能对的所有组合.关键字nway只是指定ways = n,其中n是你拥有的类变量的数量.默认情况下,proc表示包含表示总计的所有可能行(例如,组变量的给定值的总和和平均值,与子组变量无关).Ways 2指定您只对那些具有两个类变量的行感兴趣,在这种情况下,它们都是所有类变量.