我需要在变量中创建频率,而不是在proc freq输出中创建频率,而是在数据集中创建一个实际变量。我用下面的代码按ID创建运行计数。
data work.frequencycounts;
set work.dataset;
count+1;
by id;
if first.id then count=1;
run;
但是,我想要的变量不是运行计数,而是最终计数。我试图添加
frequency=last.count;
到数据步骤的最后,但这没有用。
大多数时候,SAS中的每一行都是单独处理的。您不能直接获取通过数据集的遍历收益并将其放置在每一行上。
幸运的是,大约有100种方法可以完成此操作。
这是与您的方法最相似的一种。
data work.frequencycounts;
do _n_ =1 by 1 until (last.id);
set work.dataset;
by id;
if first.id then count=0;
count+1;
end;
frequency=count;
do _n_ = 1 by 1 until (last.id);
set work.dataset;
by id;
output;
end;
run;
这相当简单地运行一次,计算计数,然后在第二遍将其放置在数据集上。这是一个双重DoW循环。
另一个选择是执行PROC FREQ并将其合并-确实非常容易。第三种选择是使用PROC SQL在SQL步骤中计算计数并将其合并(SAS将为您自动进行计数)。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句