我有一个简单的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行,因此不能作为一般解决方案)。
由于
答案 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
指定您只对那些具有两个类变量的行感兴趣,在这种情况下是所有类变量。