非法引用数组

时间:2014-05-12 16:24:10

标签: arrays sas

第一个代码似乎有效,但第二个代码是说日志中有一个非法的数组引用。我正在尝试将新值分配给特定区域,这些区域是单独的变量,而不会覆盖之前的四分之一值。因此,第二个示例将更改特定ID的值,但仅适用于QR3QR10

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;

1 个答案:

答案 0 :(得分:1)

首先将您的数组名称从p3t更改为没有数字的内容,例如pat。 SAS对阵列名称更加挑剔,你可以通过这样做消除错误。

其次,在第一个comb_new步骤结束后检查数据集DATA。如果您的数据集中不存在任何变量QR3-QR10,则会发生非法引用。