2017-03-03 68 views
0

私はSASデータセットを持っています。各行は、個人IDのために医者と連絡を取っています。各IDは異なる数の連絡先(つまり行)を持っています。私のデータセットは次のように見えます。私が何をしたいかSAS:データセットを行から列に変換する

enter image description here

私は列を作成し、私はデータセットを持たせたい各固有のID、のためである

enter image description here

のように見えること、データセットで終わるされていること各連絡先番号(NUMBER)とその連絡先のタイプ(CONTACT_TYPE)については、連絡先の番号に基づいて列の名前を付ける必要があります。また、連絡先(MAX)が最大のID、つまりNUMBER & MAXのIDに基づいて列を自動的に作成するコードを最終的な列にする必要があります。私は何とかマクロ変数「名前」に数値を変換しようとしてきたし、それがその後、何とか

%は名前= NUM​​BER

を聞かせて、その後のような何かをするdatastepでこれを使用しようとし

NUMBER &の名前。 = CONTACT_TYPE

のデータステップ。しかし、これは私のために働いていない、と私は疑わしい非常に非効率的です。

誰かがこれを解決する正しい方向に私を指摘できますか?

ありがとうございます。

よろしくアレクサンダー

+0

次回は質問のテキストとしてデータを投稿します。データステップの形で好ましい。 – Tom

答えて

1

これはPROC TRANSPOSEで達成されます。

まず、新しい列名で列を作成します。

data temp; 
set have; 
_name_ = catt("NUMBER",number); 
run; 

まだデータがない場合は、データを並べ替えます。データがソートされている場合はスキップします。

proc sort data=temp; 
by id number; 
run; 

はその後、この種の問題は、PROC TRANSPOSEを処理するように設計された、まさにです

proc transpose data=temp out=want; 
by id; 
var CONTACT_TYPE; 
id _NAME_; 
run; 
+0

ありがとうございました。これはまさに私が探していたものでした。 – AGK1991

2

移調実行します。

proc transpose data=have out=want prefix=NUMBER ; 
    by id; 
    id number ; 
    var contact_type; 
run; 
関連する問題