Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/231.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SAS:创建一个频率变量_Sas - Fatal编程技术网

SAS:创建一个频率变量

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中的每一行在大多

我需要在变量中创建一个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中的每一行在大多数情况下都是单独处理的。您不能直接获取通过数据集的过程的收益并将其放置在每一行上

幸运的是,有大约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将自动为您执行)