2017-01-16 5 views
-2

新たに1つのIDを変換し、第3を使用して2つのCSVファイルをマージします。この質問を面白くしてくれてありがとう。一日中、SASでファイルをマージしようとしました。SASはStackOverflowのに別の

私は3つの関連するファイルを持っています: (1)CSVファイル(2) "ff.csv"とマージする必要のある関連データを含むCSVファイル "all.csv"。 all.csvにidという6桁の識別子があり、ff.csvにID1という6桁の識別子があるとします。 Csvファイル番号(3)には、 "id"と "ID1"を一致させるテーブルが含まれています。

ID1と "id"は1:1で一致しますが、ff/ID1からのものは必要以上に多くの人が必要です(all.csvの人はすべて必要ですが、ff.csvの人すべてが "all" )。

これを行うにはどのような方法が最適ですか?本当にありがとう。

+0

あなたが試したものを投稿してください。 https://www.codeproject.com/Articles/33052/Visual-Representation-of-SQL-Joinsこれに基づき、あなたはおそらく左が参加したいのx 2 – Reeza

+0

StackOverflowのは、あなたがではなく、あなたの問題での試みを投稿することが必要ですコードの要求を伴う単なる問題文。 – Reeza

+0

私は、コードを追加しようとしていたが、(コード引用が適切に列に書式設定されていません)の書式設定の問題を抱えていました。どちらにせよ、ReezaとSalvaの両方が私をそこに連れて来ました。ありがとうございました! – Long

答えて

0

3番目のCSVファイルにidとID1という2つの列があると仮定して、私は以下のことを行います。
1.すべての3つのファイルがSASデータセットに変換します。
2. PROC SQLを使用して3つのテーブルをすべてマージします。あなたの条件によると、2つの左結合が必要です。

proc sql; 
    select t1.*, t2.*, t3.* 
    from one as t1 
     left join three as t3 
     on t1.id = t3.id 
     left join two as t2 
     on t2.id1 = t3.id1 
quit; 

EDIT:

あなたはこのコードを実行すると、クエリの作品が表示されます。

data one; 
    length id 3. country $ 32; 
    input id country; 
    infile datalines dsd; 
    datalines; 
1,CANADA 
2,FRANCE 
3,GERMANY 
4,JAPAN 
; 
run; 
data two; 
    length id1 3. city $ 32; 
    input id1 city; 
    infile datalines dsd; 
    datalines; 
1,BERLIN 
2,TOKYO 
3,TORONTO 
4,MEXICO 
5,PARIS 
6,MADRID 
; 
run; 
data three; 
    length id 3. id1 3.; 
    input id id1; 
    infile datalines dsd; 
    datalines; 
1,3 
2,5 
3,1 
4,2 
; 
run; 
proc sql; 
    select t1.*, t2.*, t3.* 
    from one as t1 
     left join three as t3 
     on t1.id = t3.id 
     left join two as t2 
     on t2.id1 = t3.id1 
    ; 
quit;