SAS:创建一个频率变量
我需要在变量中创建一个frequency,不是proc freq输出,而是数据集中的一个实际变量。我使用下面的代码创建了一个按ID运行的计数SAS:创建一个频率变量,sas,Sas,我需要在变量中创建一个frequency,不是proc freq输出,而是数据集中的一个实际变量。我使用下面的代码创建了一个按ID运行的计数 data work.frequencycounts; set work.dataset; count+1; by id; if first.id then count=1; run; 但是,我想要的变量不是运行计数,而是最终计数。我试图补充 frequency=last.count; 到数据步骤的末尾,但这不起作用。SAS中的每一行在大多
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;
这相当直接地运行一次,计算计数,然后在第二次运行时将其放在数据集上。这是一个双道循环
另一个选择是执行PROC FREQ并将其合并-非常简单。第三个选项是使用PROC SQL计算SQL步骤中的计数并将其合并(SAS将自动为您执行)