我是新的SAS/SQL用戶,我有一個數據集,需要將某些行轉置爲列。我認爲有一個更快或更簡單的方法來做到這一點,我想給大家一些建議。我的例子會更好地解釋我的問題:將行轉換爲SAS或SQL中的列
這裏是集我:
Month ID Car Claim_Type Cost_of_claim
1 1243 Ferrari Collision 12,000
2 6437 Peugeot Fire 50,000
5 0184 Citroen Stole 3,000
9 1930 Fiat Medical 1,000
3 2934 GM Liability 20,000
,我需要創建一個這樣的數據集:
Month ID Car Collision Fire Stole Medical Liability
1 1243 Ferrari 12,000 0 0 0 0
2 6437 Peugeot 0 50,000 0 0 0
5 0184 Citroen 0 0 3,000 0 0
9 1930 Fiat 0 0 0 1,000 0
3 2934 GM 0 0 0 0 20,000
我只是調換了一些列的列...
我在想做類似的事情來創建我的新數據集:
proc sql;
select Month, ID, CAR
case when Claim_Type = 'Collision' then Cost_of_claim end Collision,
case when Claim_Type = 'Fire' then Cost_of_claim end Fire,
case when Claim_Type = 'Stole' then Cost_of_claim end Stole,
case when Claim_Type = 'Medical' then Cost_of_claim end Medical,
case when Claim_Type = 'Liability' then Cost_of_claim end Liability
from my_table;
問題是,有大量的數據,我認爲這種方式可能不是太高效。另外,在我的數據集中,我有更多的列和行,並且不希望在case when
語句中輸入所有可能性,因爲它似乎不易於維護代碼(或用戶友好)。
有人可以幫助我解決這個問題嗎?
NOTSORTED適用於所有BY語句,它不像DESCENDING選項。我通常把它放在最後。 –