SAS:创建一个变频(SAS: Create a frequency variable)

2019-10-20 20:58发布

我需要创建变量,而不是一个进程频率输出频率,但该数据集内的实际变量。 我用下面的代码通过ID创建一个运行计数。

 data work.frequencycounts;
 set work.dataset;
 count+1;
 by id;
 if first.id then count=1;
 run;

不过,我希望变量是不是一个运行计数,这是最后的计数。 我试图添加

 frequency=last.count;

该数据步骤结束,但没有奏效。

Answer 1:

在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和合并它 - 真的很容易。 第三个选择是使用SQL PROC计算在SQL步计数和合并它(这SAS将自动为您做的)。



文章来源: SAS: Create a frequency variable
标签: sas