次のような SAS データセットがあります。
フィールド: A1 | A2 | A3 | A4 | A5 | A6 | INDEX | B
...
フィールドに変数名が含まれていINDEX
ます: A1 または A2 または ... または A6
B
フィールドにあるフィールドの内容を取得したいINDEX
。
B
フィールドで指定されたフィールドとしてフィールドを動的に割り当てるにはどうすればよいINDEX
ですか?
次のような SAS データセットがあります。
フィールド: A1 | A2 | A3 | A4 | A5 | A6 | INDEX | B
...
フィールドに変数名が含まれていINDEX
ます: A1 または A2 または ... または A6
B
フィールドにあるフィールドの内容を取得したいINDEX
。
B
フィールドで指定されたフィールドとしてフィールドを動的に割り当てるにはどうすればよいINDEX
ですか?
これを解決するかなり簡単な方法の 1 つは、配列と VNAME を使用することです。
data have;
input a1 a2 a3 index $;
datalines;
1 2 3 a1
2 3 4 a2
3 4 5 a3
4 5 6 a1
5 6 7 a3
;;;;
run;
data want;
set have;
array as a1-a3;
do _t = 1 to dim(as);
if upcase(vname(as[_t])) = upcase(index) then b = as[_t];
end;
run;
パフォーマンスを向上させるために非常に大きな配列がある場合は、その if (if... then do ブロックにする) に LEAVE ステートメントを追加できます。