一般的な問題:他のグループの条件に基づいて値を作成する方法を理解できません。私のような何かをしたいと思います:別のグループのデータに基づいてあるグループの行に条件付きフラグを設定する
gen x = cond(cond1==1 & cond2==1, value[**of some other row in a different group**], other_value)
具体的な問題:変わることはありませんid
に基づいてグループを持つ大規模なデータセット、およびない二次ID(co_id
)を考えます。各グループには、time
で繰り返す複数の行があります。各行は、特定の時点で別のグループ(すなわち、id
)との関係を示すフラグ(is_a
)を有する。この関係は、co_id
への変更によって示され、他のグループと等しくなります。今年フラグが立てられた行(is_a == 1
)新しいco_id
が属するグループのid
を見つけるため
- 、およびそのほかのグループのために
- 、フラグ:
私は二つのことをやろうとしています接続は、上記の例で
を行ったこと、grou p 111
は、11
の時間にグループ222
に接続されました(1回だけ接続されました)。新しいco_id
'xzx'
に基づいて、id
が222
以降であることを示したいと思います。他のグループにはco_id
があるかもしれませんが、正しい数字はco_id
のデータの中で最も早いものです(したがって、222
であり、777
ではありません)。
グループ222については、接続が行われたときにその時刻にフラグを立てます(time == 11
)。
サンプルデータ:
clear
input int id byte(is_a time) str3 co_id
111 0 10 "abc"
111 0 10 "abc"
111 1 11 "xzx"
111 1 11 "xzx"
111 1 12 "xzx"
111 1 12 "xzx"
222 0 10 "xzx"
222 0 10 "xzx"
222 0 11 "xzx"
222 0 11 "xzx"
222 0 12 "xzx"
222 0 12 "xzx"
777 1 13 "xzx"
end
は、事前にありがとうございます!
人々がコピー&ペーストできるデータの例を示してください。 'ssc inst dataex'は小さなデータの例を' input'コードとして提供します。何人の人が画像に見られるものを再入力したいのですか?また、_rows_という用語は、Stataディスカッションには、スプレッドシートの議論と同じように、Stataディスカッションの外にあります。 –
「vlookup」と呼ばれるユーザから書かれたコマンドがあります。そのアプローチは再利用するかもしれませんが、既製では機能しません。 –
@NickCoxが追加されました。ごめんなさい、ありがとう! –