SAS:数据步骤和密钥 - 选项

时间:2012-05-10 13:11:18

标签: sas

我不确定此代码是否会在没有警告或错误的情况下运行。我已使用key修饰符设置了UNIQUE选项。

set行会发生什么?

data One(keep= f1 f2);  
   attrib f2 length = $4;
   set Two key = f3 / unique;   /* Unexpected behaviour? */
   if (f1=0) then do; 
       f2 = 'Zero';
       output;
   end;
run;

2 个答案:

答案 0 :(得分:4)

KEY =选项用于针对已编制索引的查找数据集,其值在第二个数据集中查找。因此,数据步骤需要2个语句。在您的代码中,没有数据集可以查找“Two”中的值,这会导致所有变量都具有缺失值的无限循环。如果您在单独的SET语句中添加了“Two”数据集,那么它将只返回它的副本(没有f3变量和您放入的变换)。你显然不会想要这样做,我只是建议它使代码工作。

网上有很多关于如何执行索引键合并的示例,如果您在大型数据集中查找少量值,这是一种有效的技术。

答案 1 :(得分:1)

不确定你在问什么。只要您的数据集TWO具有名为F3的索引,它在语法上是正确的。该索引可能是复合索引(多个变量)或名为F3的变量上的单个索引。变量F1可能在数据集TWO中,但如果不是,它将丢失。