3

作業中に問題があります。2つのデータセットをマージしました。同じ内容の変数がいくつかありますが、データセット1の変数に値がある観測値には、データセット2の値がありません。 1つの変数から別の変数に値を転送する必要があります。

これはこれまでの私のベストショットです:

replace V23=1 if V232==1
replace V23=2 if V232==2
replace V23=3 if V232==3
replace V23=4 if V232==4
replace V23=8 if V232==8
replace V23=.u if V232==10 | V232==9

ただし、40以上の変数に対してこれを行うのは面倒な作業であり、それらの一部は数値変数であるため、シーシュポスの作業になります。

4

1 に答える 1

2

スタートは次のとおりです。

foreach v of varlist v23 {
    local w `v'2
    replace `v' = `w' if missing(`v')
    replace `v' = .u if `w' == 10 | `w' == 9
}

このソリューションが変数名間の字句関係にどのように依存しているかに注意してください。古い変数「v23」が新しい変数「v232」に関連付けられていることを前提としています。そのような関連付けのリストを作成して使用することはできますが、これは不便です。必要に応じて、そのような規則に準拠するように変数の名前を変更し、置換スクリプトを実行してから、目的の名前を復元する方がおそらく簡単です。

この種の自動化に慣れていない場合は、macroおよびのヘルプページをお読みくださいforeach

于 2011-07-19T21:44:24.097 に答える