1
假設我有一個超市的數據集,其中包含產品類別,價格產品名稱等。我想按類別排序,但是按照定義的順序排序,而不是按字母順序排序。如何按sas中的已定義順序排序,而不是按字母順序排序?
例如,如果這些類別是:罐裝,乳製品,肉類,蔬菜,我想在它們可能到期時進行排序(我可能會有這些信息,所以請一起玩)。這意味着我想按此順序排序:乳製品,肉類,蔬菜,罐頭。
我寫了一個宏觀與此簽名:
key_sort(ds=, keys='canned, dairy, meat, vegetable', field =category, sort_by=)
這解析鍵,以便可以在宏循環放,然後我用那麼多回路寫出來的select語句,像這樣:
Select(&field.) ;
%do i=1 %to &number_of_keys. ;
%let current_key= %scan(&keys., &I., &delim.) ;
When(¤t_key.) &field._key=&i. ;
%end;
End;
然後我排序的&field._key
這是採取的最佳方法是什麼?這可以更簡潔或有效地完成嗎?
這聽起來像是一種合理的方法。基本上,你需要輸入一個數值來定義你感興趣的類別的相對順序。然後按照這個數字值而不是類別進行排序。 – 2014-01-18 11:16:46
我想另一種選擇是合併該數字號碼。 – Pureferret
@Pureferret我的SAS有點生疏,我沒有安裝SAS系統來測試...... Anwyay ... proc格式沒問題,但我相信proc排序不會考慮排序的格式化值...所以,實際上,你可以使用'format'作爲迷你查找時間,並使用sql和臨時變量對格式化的值進行排序... –