2012-05-10 81 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