【发布时间】:2015-05-04 12:44:59
【问题描述】:
我需要为数据步的每次迭代声明一个变量(对于每个n),但是当我运行代码时,SAS 将只输出声明的最后一个变量,最大的 n.
为每一行声明一个变量似乎很愚蠢,但我需要实现这个结果,我正在处理由 proc freq 创建的数据集,并且我需要为每个组(数据集的每一行)创建一个列。
结果将在一个宏中,所以它必须是完全灵活的。
proc freq data=&data noprint ;
table &group / out=frgroup;
run;
data group1;
set group (keep=&group count ) end=eof;
call symput('gr', _n_);
*REQUESTED code will go here;
run;
我试过这些:
var&gr.=.;
call missing(var&gr.);
还有很多其他的说法,但没有一个奏效。 总是相同的结果,ds 只包含 var&gr,其中 &gr 是最大值 n。
似乎 PDV 每次迭代都会覆盖新变量,但名称不同。 请将结果包含在单个数据步中,或者至少让代码花费更少的时间。
知道如何达到要求的结果吗?
谢谢。
【问题讨论】:
-
请不要使用 proc transpose,因为我每行需要 3 列 right_&gr sep_&gr left_&gr,这将由一些数据提供,然后是 ods 输出。
-
另外,我可以使用调用执行来解决这个问题,但如果可能的话,我正在寻找不需要那个时间的解决方案,一个简单的变量声明会很棒。
标签: sas