2

DATA の説明: 調査員 ID とさまざまな調査質問への回答が含まれています。調査に対する回答の 1 つが 99 または 999 または 9999 (無限) である場合、それは「いいえ」の数値表現です。アンケートの回答の 1 つが 98、998、988、9988、998888 などである場合、それは「はい」の数値表現です。ほとんどのデータは整数形式です。

「9」で始まり「9」で終わる値を持つすべての変数を「いいえ」という単語に置き換え、「9」で始まり「8」で終わるすべての変数を「はい」に置き換えたい."

私の現在の戦略は、すべての単一の変数を文字列に変換し、次の 2 つの正規表現を実行することtostring _all, replace を繰り返します。string_vars

regexr(`value', "^[9]*[9]$","No")
regexr(`value', "^[9]*[8]$", "Yes")

すべての値を文字列に変換せずにこれを行う簡単な方法はありますか?

4

3 に答える 3

1

そのために使えますinlist。var1 は、これらの数値を含む変数です

gen dummy=""
replace dummy ="NO" if inlist(var1,99,999,9999)
replace dummy ="YES" if inlist(var1,98,998,988)

ダミーを手にすると、それに基づいてサンプルを制限できます。

また、

var1 に 0 または 1 がない場合は、これらを 0 および 1 に置き換えることができます。

replace var1 =0 if inlist(var1,99,999,9999)
 replace var1 =1 if inlist(var1,98,998,988)
于 2013-09-30T13:10:34.683 に答える