2012-05-10 110 views
0

我不确定此代码是否会在没有警告或错误的情况下运行。我已使用UNIQUE修饰符设置了key选项。SAS:数据步骤和密钥 - 选项

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

我不清楚你在这个问题上问什么 - 你能澄清一点吗?这是否会引发警告,错误或仅返回意外结果? – JustinJDavies

回答

4

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

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

1

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

+0

类似的代码不起作用:\ this strange:\ – gaussblurinc