如何使用proc摘要并保留所有变量(不指定它们)

Hel*_*len 1 summary sas

我想在我的数据集中总结一个特定的变量,而不会丢失所有其他列.我试过以下代码:

proc summary data=work.test nway missing; 
class var_1 var_2 ; *groups;
var salary; 
id _character_ _numeric_; * keeps all variables;
output out=test2(drop=_:) sum= ;
run;
Run Code Online (Sandbox Code Playgroud)

但它似乎没有正确总结,对于"薪水"列,我只剩下每组中最后一个值的值(var_1和var_2).如果我删除

 id _character_ _numeric_; 
Run Code Online (Sandbox Code Playgroud)

它工作正常,但我松开了所有其他列.

示例:

数据:

data salary;
   input name $ dept $ Salary Sex $;
   datalines;
John Sales 23 M
John Sales 43 M
Mary Acctng 21 F
; 
Run Code Online (Sandbox Code Playgroud)

期望的输出:

John Sales 66 M

Mary Acctng 21楼

dat*_*ll_ 5

我认为这样做你想要的.您仍然会收到有关名称冲突和变量被删除的警告,但至少保留了您想要的变量.ID语句在新的和更好的IDGROUP输出语句选项中有利于折旧.

如果希望PROC SUMMARY自动重命名冲突变量,可以将AUTONAME选项添加到输出语句中.

data salary;
   input name $ dept $ Salary Sex $;
   datalines;
John Sales 23 M
John Sales 43 M
Mary Acctng 21 F
;;;;
   run; 
proc print;
   run;
proc summary nway missing; 
   class name dept; 
   var salary; 
   output out=test2(drop=_:) sum= idgroup(out(_all_)=);
   run;
proc print;
   run;                                                                                                                   
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述