数组下标超出第29行第18列的范围

时间:2017-08-10 00:20:40

标签: arrays sas

我试图使用ARRAY函数对示例数据集进行一些计算。以下是我的代码:

DATA INCHES;
SET SASHELP.FISH;
ARRAY CONVERT[5] HEIGHT WIDTH LENGTH1 LENGTH2 LENGTH3;
DO I = 1 TO 159;
CONVERT[I]=ROUND(CONVERT[I]/2.54);
DROP I;
END;
RUN;

日志中出现错误:

  

错误:数组下标超出第29行第18行的范围。

感谢您的时间和帮助。

1 个答案:

答案 0 :(得分:1)

上面的汤姆是对的。数组允许您使用索引执行计算,但它们具有长度。命令

ARRAY CONVERT[5] HEIGHT WIDTH LENGTH1 LENGTH2 LENGTH3; 

表示转换[1]指的是高度...... [2]到宽度等等。如你只提到5个变量,你不能参考[6],因为它不存在。

为什么要使用数组?好吧,你可以做简写符号,比如sigma = sum(of convert [*])

DATA INCHES;
    SET SASHELP.FISH;
       ARRAY CONVERT[5] HEIGHT WIDTH LENGTH1 LENGTH2 LENGTH3;
        DO I = 1 TO 5;
            Converted[I]=ROUND(CONVERT[I]/2.54);
            DROP I;
        END;
RUN;

有关阵列的更多信息,请参阅:https://support.sas.com/resources/papers/97529_Using_Arrays_in_SAS_Programming.pdf