我想在我的数据集中总结一个特定的变量,而不会丢失所有其他列.我试过以下代码:
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楼
我认为这样做你想要的.您仍然会收到有关名称冲突和变量被删除的警告,但至少保留了您想要的变量.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)