2つのデータセットの間で全ての組み合わせを求める

[OS] ALL
[リリース] ALL
[キーワード] BASE, SQL, COMBINATION

[質問]

2つのデータセットの間で、全ての組み合わせを求める簡単な方法はありますか。

[回答]

SQLプロシジャで簡単に求められます。
下記の例を参考にしてください。

プログラム例: dsn1とdsn2の全ての組み合わせをnewに出力する


  data dsn1;
    input a $ @@;
  cards;
  A B C
  ;
  run;

  data dsn2;
    input b @@;
  cards;
  1 2 3 4 5
  ;
  run;

  proc sql;
    create table work.new as
    select *
    from dsn1, dsn2;
  quit;

データセット1: dsn1

  OBS    a

   1     A
   2     B
   3     C

データセット2: dsn2

  OBS    b

   1     1
   2     2
   3     3
   4     4
   5     5

結果:(new)


    OBS    a    b

      1    A    1
      2    A    2
      3    A    3
      4    A    4
      5    A    5
      6    B    1
      7    B    2
      8    B    3
      9    B    4
     10    B    5
     11    C    1
     12    C    2
     13    C    3
     14    C    4
     15    C    5

共通の変数を利用して組み合わせるには、WHEREステートメントを利用します。


  data dsn1;
    input var a $ @@;
  cards; 
  1 A  2 B 3 C
  ;
  run;

  data dsn2;
    input var b @@;
  cards;
  1 1 2 2 2 2 3 3
  ;
  run;

  proc sql;
    select *
    from dsn1, dsn2
    where dsn1.var = dsn2.var;
  quit;