是否有理由不能在keep =数据集选项中引用数组?

时间:2015-11-19 19:42:02

标签: sas

以下是代码。

data WORK.TOTALSALES(keep=MonthSales{12}); 
     set WORK.MONTHLYSALES(keep=Year Product Sales); 
     array MonthSales{12}; 
     do i=1 to 12; 
        MonthSales{i}=Sales;
     end;
     drop i;
run;

非常感谢您的时间和关注。

3 个答案:

答案 0 :(得分:3)

keep=数据集选项不支持数组,但它支持顺序编号的变量。

data WORK.TOTALSALES(keep=MonthSales1-MonthSales12); 
     set WORK.MONTHLYSALES(keep=Year Product Sales); 
     array MonthSales{12}; 
     do i=1 to 12; 
        MonthSales{i}=Sales;
     end;
     drop i;
run;

答案 1 :(得分:0)

SAS(R) 9.4 Language Reference: Concepts, Fifth Edition中记录的SAS阵列具有以下限制:

  

数组定义仅在DATA的持续时间内有效   步。如果你想在几个DATA步骤中使用相同的数组,那么   必须在每一步中重新定义数组。

因此,即使您在WORK.TOTALSALES上使用array(而不是tm)数据集选项来获取数据步骤中的其他变量,该数组仍然不会成为其中的一部分输出数据集,因为它只存在于使用[语句定义的数据步骤中。

此致 阿米尔。

答案 2 :(得分:0)

数据步骤中的SAS数组只是变量的逻辑分组。该分组仅适用于该数据步骤内的处理。像drop=keep=这样的数据集选项由SAS IO系统处理,它独立于数据步骤。