我有一个权重变量 wprm ,它取整数值。我希望有一个权重"标准化",也就是说 wprm / sum(wprm)
我可以通过输出proc summary
蚂蚁然后输出merge
来将其与原始数据一起放回来,然后再划分我的 wprm 变量来实现,但似乎是有点沉重,有更简单的方法吗?
答案 0 :(得分:2)
使用PROC STDIZE或PROC STANDARD - 它们都允许各种标准化方法。
proc stdize data=have method=sum out=want;
var wprm;
run;
答案 1 :(得分:0)
您可以从here抓取宏%simple_normalize
。
data test;
do i=1 to 10;
output;
end;
run;
%simple_normalize(test,i);
答案 2 :(得分:0)
另一个常见选项是SQL,但它会在日志中发布警告/注释,许多人都不喜欢。
proc sql;
create table want as
select a.*, a.wprm/sum(a.wprm) as weight
from have;
quit;