0

我不确定此代码是否会在没有警告或错误的情况下运行。我已经用修饰符设置了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;
4

2 回答 2

4

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

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

于 2012-05-10T15:13:09.887 回答
1

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

于 2012-05-10T14:41:59.340 回答