1

Excelの「VLOOKUP」関数と同じように機能するSASコードを探しています。

テーブルが 2 つあります。table_1 には ID 列があり、その中には 10 行の他の列があります。Table_2 には、50 行の ID と定義の 2 つの列があります。table_1 で新しい変数 "Definition" を定義し、table_2 から ID 値を参照したいと考えています。

マージ以外は実際には試していません。しかし、マージは table_2 から余分な 40 個の変数をすべて保持します。それは私が好きなものではありません。

ありがとう、SE

4

2 に答える 2

4

最も簡単な方法は、ステートメントでkeepオプションを使用することです。merge

data result;
    merge table_1 (in=a) table_2 (in=b keep=id definition);
    by id;
    if a;
 run;

データセットを並べ替える必要がないことを意味する別の方法は、proc sql を使用することです。

proc sql;
    create table result as
    select a.*,
           b.definition
    from table_1 a
    left join table_2 b on a.id = b.id;
quit;

最後に、table_2 が小さい場合は、ハッシュ テーブル オプションがあります。

data result;
    if _n_ = 1 then do;
        declare hash b(dataset:'table_2');
        b.definekey('id');
        b.definedata('definition');
        b.definedone();
        call missing(definition);
    end;
    set table_1;
    b.find();
run;
于 2013-06-26T17:18:27.510 に答える