私は新しい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は、DESCENDINGオプションとは異なり、BY文のすべてに適用されます。私は通常それを最後に置く。 –