我需要创建变量,而不是一个进程频率输出频率,但该数据集内的实际变量。 我用下面的代码通过ID创建一个运行计数。
data work.frequencycounts;
set work.dataset;
count+1;
by id;
if first.id then count=1;
run;
不过,我希望变量是不是一个运行计数,这是最后的计数。 我试图添加
frequency=last.count;
该数据步骤结束,但没有奏效。
我需要创建变量,而不是一个进程频率输出频率,但该数据集内的实际变量。 我用下面的代码通过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;
这相当直截了当通过运行一次,计算数量,那么其放在第二遍的数据集。 这是一个双循环道。
另一种选择是做PROC FREQ和合并它 - 真的很容易。 第三个选择是使用SQL PROC计算在SQL步计数和合并它(这SAS将自动为您做的)。