我不确定此代码是否会在没有警告或错误的情况下运行。我已使用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;
答案 0 :(得分:4)
KEY =选项用于针对已编制索引的查找数据集,其值在第二个数据集中查找。因此,数据步骤需要2个语句。在您的代码中,没有数据集可以查找“Two”中的值,这会导致所有变量都具有缺失值的无限循环。如果您在单独的SET语句中添加了“Two”数据集,那么它将只返回它的副本(没有f3变量和您放入的变换)。你显然不会想要这样做,我只是建议它使代码工作。
网上有很多关于如何执行索引键合并的示例,如果您在大型数据集中查找少量值,这是一种有效的技术。
答案 1 :(得分:1)
不确定你在问什么。只要您的数据集TWO具有名为F3的索引,它在语法上是正确的。该索引可能是复合索引(多个变量)或名为F3的变量上的单个索引。变量F1可能在数据集TWO中,但如果不是,它将丢失。