2014-01-13 148 views
0

我有興趣創建新的行是有條件的特定變量的SAS。有條件地插入SAS中的行

假設這些是RecordID,ItemName,ItemCount,ItemX,ItemY,ItemZ列的名稱。
ItemX,ItemY和ItemZ是可以等於或大於0的數字變量。
當ItemX,ItemY和/或ItemZ保存的值大於0時,我想要在ItemName包含的位置創建一個新行變量名稱(ItemX,ItemY,ItemZ)和包含數值的ItemCount。

例如,如果RecordNumber = 1的ItemX = 5且ItemY = 10,則ItemName = ItemX和ItemCount = 5將出現在新行中。 ItemName = ItemY和ItemCount = 10有它自己的行。

我應該如何在SAS中解決這個問題?謝謝。

回答

2

很簡單:

data want(keep=ItemName ItemCount); 
set have; 
array items[3] itemx itemy itemz; 
format ItemName $32. ItemCount best.; 

do i=1 to 3; 
    if items[i] > 0 then do; 
     ItemName = vname(items[i]); 
     ItemCount = items[i]; 
     output; 
    end; 
end; 
run; 

創建項目的數組變量。循環播放該數組。檢查你的狀況。使用vname()函數獲取變量名稱和output語句以創建輸出記錄。

1

我明白你打算做什麼。
<yoda> 您正在尋找PROC TRANSPOSE。 </yoda >

+0

不錯,約翰! – DomPazz