使用跨数据集的变量

时间:2011-11-30 21:32:53

标签: sas

假设我在SAS中有以下数据集:

DATA example_1;
   INFILE 'data.csv' dsd;
   INPUT name $ test1-test5;
   ARRAY test{5} test1-test5;
   ARRAY maximum{5} _TEMPORARY_ (50, 75, 50, 100, 75);
RUN;
PROC PRINT DATA=example_1;
RUN;

我想创建另一个使用test数组和maximum数组的数据集来计算每个测试的分数。

DATA example_2;
   SET example_1;
   ARRAY percent{5}; /* This can originally be all 0s it doesn't really matter */
   DO i = 1 TO 5;
       percent{i} = (test{i} / maximum{i}) * 100;
   END;
   DROP i;
RUN;
PROC PRINT DATA=example_2;
RUN;

如何使用example_1中的这两个数组?我现在使用set example_1的方式不起作用..

谢谢!

1 个答案:

答案 0 :(得分:3)

数组不作为数据集的一部分存储,只存储变量。因此,当您在第二个数据步骤中引用test{i}时,它不存在。 (变量test1-test5存在,但它们不在数组中。)

只需添加相同的行

ARRAY test{5} test1-test5;
ARRAY maximum{5} _TEMPORARY_ (50, 75, 50, 100, 75);

到第二个数据步骤,它应该可以工作。