2016-05-04 21 views
0

私はこれらの2つのテーブルをptidとtx_codeの順序で結合しようとしています。 dat2の各観測がdat1からの反復情報とともに返されるように、結合する理想的な方法は何ですか?proc sqlの同じ列名と一対多のマージ

data baseline; 
input ptid age gender $ stat stat_date creat tx_code datnum$; 
cards; 
123 40 M A 02/15/2004 1.2 3 1 
456 29 F A 06/05/2009 1.5 2 1 
789 53 M D 01/10/2007 2.0 1 1 
; 
run; 

data followup; 
input ptid tx_code stat stat_date wgt hgt organ datnum $; 
cards; 
123 3 A 02/15/2004 60 150 ki 2 
123 3 A 10/05/2004 75 150 ki 2 
456 2 A 06/05/2009 95 173 SKP 2 
456 2 A 12/30/2009 95 173 SKP 2 
456 2 A 05/05/2010 93 173 SKP 2 
456 2 A 10/20/2010 85 173 SKP 2 
456 2 D 11/10/2010 . 173 SKP 2 
789 1 A 01/10/2007 65 180 pta 2 
789 1 A 06/25/2007 60 180 pta 2 
789 1 L 06/25/2008 . . pta 2 
; 
run; 
+0

両方を保持するSTAT_DATE変数の名前を変更する必要があります。また、なぜ1つは日付で、もう1つは文字列ですか? – Tom

+0

それはちょうどタイプミスでした。 – Douce

答えて

1

proc sqlを使用して結合します。明確な観測のみを行う場合は、「選択」ではなく「選択」を使用してください。

proc sql; 
    create table resultant_table as select 
     a.*, b.wgt, b.hgt, b.organ, b.stat as stat2, b.stat_date as stat_date2 
     from baseline as a 
     left join followup as b 
     on a.ptid = b.ptid and a.tx_code = input(b.tx_code, 8.); 
quit; 
+0

結果テーブルに「join」という名前を付けないでください。それは紛らわしい。 – wildplasser

+0

@superfluous、obsごとに日付が異なるので、どのようにt2のstat_dateとstatを返すことができますか?私は合体を試みましたが、それは最初の日付だけをキャプチャします。 – Douce

+0

結果テーブルに含める変数のリストにその変数を含めるだけで済みます。作成した編集をチェックアウトして、あなたの質問に答えるかどうか教えてください。 – superfluous

関連する問題