1

以下に示すように、Table1 と Table2 という 2 つの sas データ セットがあります。これら 2 つのデータセットには、Account という名前の共通変数が 1 つあります。しかし、私が直面している問題は、以下に示すように、table1 アカウントと table2 アカウントのデータの形式が異なることです。ここに 2 つの問題があります。Table2 アカウントを 12 桁の数字にするために、必要な数のゼロを前に付けて 12 桁の数字にしたいと考えています。また、Table2 の口座番号と一致する Table1 の口座番号を取得できるように、Table1 にある口座番号の形式を変更します。

Table1

   ID    Account              dt
    1   "212-3276-45600"    454
    2   "562-3248-45674"    565
    3   "789-3946-45888"    6767
    4   "382-3776-45612"    766
    5   "232-3446-45674"    767
    6   "038-3276-45674"    77
    7   "232-3246-45674"    88

Table2

Account
562324845674
789394645888
38327645674
4

1 に答える 1

1

実際のデータ ステップ マージを使用するには、まず変数のタイプ/フォーマット/その他を一致させる必要があります。SQLでこれを行うことができます:

proc sql;
create table want as select t1.account, t1.id, t1.dt
  from table1 t1, table2 t2
  where input(compress(t1.account,,'kd'),BEST12.) = t2.account;
quit;

データ ステップ マージではマージ変数を操作できませんが、前のデータ ステップでは操作できました。

data table1_fixed;
set table1;
new_account = input(compress(account,,'kd'),BEST12.);
run;

次にtable2、 のアカウントの名前を同じものに変更します。t2 のアカウントを t1 に合わせようとするのは、より複雑なのでお勧めしません。

ここで行っているのは、compress を使用して不要な文字を削除または保持することです。3 番目の引数 'k' は 'keep' (削除しない) を意味し、'd' は 'digits' を意味します。したがって、数字のみが保持され、残りは削除されます。次に、入力によって数値に変換されます。

于 2013-10-30T20:41:42.707 に答える