としてそれぞれに、複数に1つの変数を回すには、私は、次のデータセットがあるとします。のStata:値または0
clear
input SubjectID DecisionID AltID my_alpha
1 1 1 0.4
1 1 2 0.4
1 2 1 0.6
1 2 2 0.6
2 1 1 0.8
2 1 2 0.8
2 2 1 0.5
2 2 2 0.5
end
私はmy_alpha
の値に依存AltID
の各値に対して新しい変数を作成したいです。このシナリオでは、AltID_alpha_1
とAltID_alpha_2
になります。 AltID_alpha_1
は、AltID
がであり、そうでない場合は0
に等しいとき、my_alpha
に等しくなります。同様に、AltID_alpha_2
は、AltID
が2
に等しく、それ以外は0
に等しいとき、my_alpha
に等しくなります。つまり、次のようになります。
| 件名 | DecisionID | AltID | my_alpha | alpha_AltID_1 | alpha_AltID_2 |
| 1 ------------ | 1 ------------ | 1 ----- | 0.4 -------- | 0.4 --------------- | 0 ----------------- |
| 1 ------------ | 1 ------------ | 2 ----- | 0.4 -------- | 0 ----------------- | 0.4 --------------- |
| 1 ------------ | 2 ------------ | 1 ----- | 0.6 -------- | 0.6 --------------- | 0 ----------------- |
| 1 ------------ | 2 ------------ | 2 ----- | 0.6 -------- | 0 ----------------- | 0.6 --------------- |
| 2 ------------ | 1 ------------ | 1 ----- | 0.8 -------- | 0.8 --------------- | 0 ----------------- |
| 2 ------------ | 1 ------------ | 2 ----- | 0.8 -------- | 0 ----------------- | 0.8 --------------- |
| 2 ------------ | 2 ------------ | 1 ----- | 0.5 -------- | 0.5 --------------- | 0 ----------------- |
| 2 ------------ | 2 ------------ | 2 ----- | 0.5 -------- | 0 ----------------- | 0.5 --------------- |
問題は、私の実際のデータでは、私はよく万人以上の観察、AltID
ための5151個の値、および(最低でも)my_alpha
とmy_beta
の両方のための変数を作成する必要があるということです。私はこれを「迅速に」行う方法が必要です。
私はforeach
ループを使用して変数を作成しようとしましたが、20時間実行した後は切り捨てる必要がありました(デスクトップには24 GBのRAMがあります)。私はquietly tab AltID, gen(alpha_AltID_)
というコマンドを使って0
を適切な場所に入れ、1
のどこかに数秒しかかからなかったのですが、私は1
のすべてを正しい値に置き換えるループが必要です現在のペースで約2時間かかります。誰かが時間効率のよいソリューションを持っていますか?
あなたの最初のリストを編集しました。これは意味がありますが、無関係の文字が含まれているため、インポートに便利です。 –