在这段 SAS 数据步骤代码中,我从一个名为 TEST_Table 的 SQL 查询中设置了一个表。此表包含多个列,包括标题为 PREFIX_1 到 PREFIX_20 的大部分列。每列以 PREFIX_ 开头,然后是从 1 到 20 的递增数字。
我想做的是迭代循环遍历每一列并分析该列的值。
下面是我正在尝试的一个例子。如您所见,我想创建一个在每次迭代中增加的变量,然后我使用该计数值作为我正在检查的变量名称的一部分。
data TEST_Data;
set TEST_Table;
retain changing_number;
changing_number=1;
do while(changing_number<=20);
if PREFIX_changing_number='BAD_IDENTIFIER' then do;
PREFIX_changing_number='This is a bad part';
end;
end;
run;
在 SAS 中执行此操作的最佳方法是什么?我知道我可以通过简单地从 1 到 20 分别检查每个值来做到这一点。
if PREFIX_1 = 'BAD_IDENTIFIER' then do;
PREFIX_1 = 'This is a bad part';
end;
if PREFIX_2 = ...
但这真的很令人讨厌,因为稍后我将对一组超过 40 列做同样的事情。
想法?
解决方案
data TEST_Data;
set TEST_Table;
array SC $ SC1-SC20;
do i=1 to dim(SC);
if SC{i}='xxx' then do;
SC{i}="bad part";
end;
end;
run;
感谢您推荐数组 :)