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