第一个代码似乎有效,但第二个代码是说日志中有一个非法的数组引用。我正在尝试将新值分配给特定区域,这些区域是单独的变量,而不会覆盖之前的四分之一值。因此,第二个示例将更改特定ID
的值,但仅适用于QR3
到QR10
。
data comb_new;
set comb_new;
array DQR(10) QR1-QR10;
do i = 1 to 10;
if id = "071800" then DQR(i) = 6;
end;
drop i;
run;
第二
data comb_new;
set comb_new;
array p3t (8) QR3-QR10;
do i = 1 to 8;
if id = "141956" then p3t(i) = 6;
end;
if id = "461818" then p3t(i) = 6;
end;
if id = "261808" then p3t(i) = 6;
end;
if id = "261893" then p3t(i) = 6;
end;
if id = "261894" then p3t(i) = 6;
end;
if id = "011936" then p3t(i) = 6;
end;
if id = "141854" then p3t(i) = 6;
end;
if id = "061883" then p3t(i) = 6;
end;
drop i;
run;
答案 0 :(得分:1)
首先将您的数组名称从p3t
更改为没有数字的内容,例如pat
。 SAS对阵列名称更加挑剔,你可以通过这样做消除错误。
其次,在第一个comb_new
步骤结束后检查数据集DATA
。如果您的数据集中不存在任何变量QR3-QR10
,则会发生非法引用。