次の名前の変数のデータセットがあるとします ( と のスタブに注意してくださいx
) hm
。
x9, xdog, x_99, hma8j, hm40, hm0
変数名のリスト (ワイルドカードを含む場合があります) を提供するプログラムによる方法を開発し、各変数名をrecode
0 未満のすべての値と欠損値 ( .
) にループします。
実際には、私は多くの列を持っておりrecode
、そのうちのいくつかだけを必要としています。データが大きいため、列のインデックスや範囲がわからないため、それらを使用したくありません。
私のアプローチには、次の手順が含まれます。
myvars
ワイルドカードを含む変数名を含むという名前のローカル マクロを作成します。local myvars x* hm*
変数リスト内の文字列を展開して、完全な変数名文字列を含めます (これにより、元の変数名が生成されます)。
syntax 'myvars'
変数名のリストをループして、値を欠落に設定します。
foreach x of local 'myvars' { replace 'x' = . if 'x' < 0 }
for
ただし、ワイルドカードをループに含める方法がわかりません。上記のコードは機能せず、invalid syntax
エラーが発生します。
私は、Statalist の次のスレッドが役立つことを発見しましたが、それらは解決策を提供しておらず、スタブの使用は効率的ではないようです。
誰でも私を助けることができますか?