2016-10-05 39 views
2

データセットに3つの列、spend,age_bucketおよびmultiplierがあります。データは...何かのように見えますSASでピボットテーブルを作成するにはどうすればよいですか?

spend age_bucket multiplier 
10  18-24  2x 
120  18-24  2x 
1  35-54  3x 
私は支出の年齢バケットなどの列を持つデータセット、乗算器として行、お​​よびエントリの和として(やほかの集計関数)を希望

カラム。これを行うにはprocはありますか? proc SQLを使って簡単に達成できますか?

+0

PROCのtabulateのは、特定の集計にピボットタイプのテーブルを構築するための強力です。 – Reeza

答えて

2

これを行う方法はいくつかあります。

data have; 
input spend age_bucket $ multiplier $; 
datalines; 

10  18-24  2x 
120  18-24  2x 
1  35-54  3x 
10  35-54  2x 
; 

proc summary data=have; 
var spend; 
class age_bucket multiplier; 
output out=temp sum=; 
run; 

まず、あなたは問題の変数のために、この場合には集約、合計を計算するためにPROC SUMMARYを使用することができます。 CLASSステートメントは、合計するものを示します。これにより、N-Way合計が計算され、出力データセットにはすべてが格納されます。コードを実行し、データセットtempを調べます。

次に、PROC TRANSPOSEを使用してテーブルをピボットすることができます。 BYステートメントを使用する必要がありますので、PROC SORTが必要です。私はあなたが気にする集計にもフィルタをかけます。

伝統的なモードでは35-54は有効なSAS変数名ではありません。 SASはあなたの列を適切な名前に変換します。変数のラベルは元の値を保持します。あとで変数を参照する必要がある場合は、名前が有効に変更されていることに注意してください。

enter image description here

関連する問題