0

このコードが警告やエラーなしで実行されるかどうかはわかりません。修飾子を使用してkeyオプションを設定しました。UNIQUE

並んで何が起こりsetますか?

data One(keep= f1 f2);  
   attrib f2 length = $4;
   set Two key = f3 / unique;   /* Unexpected behaviour? */
   if (f1=0) then do; 
       f2 = 'Zero';
       output;
   end;
run;
4

2 に答える 2

4

KEY =オプションは、インデックスが作成されたルックアップデータセットに対して使用され、その値は2番目のデータセットでルックアップされます。したがって、データステップには2つのsetステートメントが必要です。コードには、「Two」から値を検索するデータセットがありません。その結果、すべての変数の値が欠落している無限ループが発生します。別のSETステートメントに「Two」データセットを追加した場合は、そのコピーが返されます(f3変数なしで、入力した変換を使用)。あなたは明らかにこれをしたくないでしょう、私はコードを機能させるためにそれを提案しているだけです。

インデックスキーのマージを実行する方法については、オンラインで多くの例があります。これは、大きなデータセットで少数の値を検索する場合に効率的な手法です。

于 2012-05-10T15:13:09.887 に答える
1

何を求めているのかわからない。データセットTWOにF3という名前のインデックスがある限り、構文的に正しいです。そのインデックスは、複合インデックス(複数の変数)またはF3という名前の変数の単一のインデックスである可能性があります。また、変数F1はデータセットTWOに含まれている可能性がありますが、含まれていない場合は欠落します。

于 2012-05-10T14:41:59.340 に答える