Problème général: Je ne comprends pas comment créer une valeur basée sur une condition provenant d'autres groupes. Je voudrais faire quelque chose comme:Marquer des rangées conditionnellement d'un groupe en fonction des données d'un autre groupe
gen x = cond(cond1==1 & cond2==1, value[**of some other row in a different group**], other_value)
problème spécifique: Étant donné un ensemble de données massif qui a des groupes en fonction de id
qui ne change jamais, et un identifiant secondaire (co_id
) qui. Chaque groupe a plusieurs lignes qui se répètent dans time
. Chaque rangée a un drapeau (is_a
) qui indique une relation avec un autre groupe (c'est-à-dire, id
) à un certain moment. La relation est indiquée par un changement à co_id
donc il est égal à l'autre groupe.
Je suis en train de faire deux choses:
- pour les lignes battant pavillon (
is_a == 1
) trouver leid
du groupe que le nouveauco_id
appartient et - Pour cet autre groupe, drapeau de l'année que la connexion a été faite
Dans l'exemple ci-dessus, Grou p 111
a été connecté au groupe 222
dans le temps 11
(une connexion est faite qu'une seule fois). Basé sur le nouveau co_id
'xzx'
Je veux indiquer le id
222
à partir de ce moment-là. Notez que les autres groupes peuvent avoir cette co_id
, mais la correcte est l'apparition la plus ancienne de ce co_id
dans les données (de sorte que l'un est 222
et non 777
).
Pour le groupe 222, alors je signale cette heure lorsque la connexion a été établie (time == 11
).
Les données de l'échantillon:
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
Merci à l'avance!
S'il vous plaît donner un exemple de personnes de données peuvent copier et coller. 'ssc inst dataex' vous permet de fournir un petit exemple de données en tant que code' input'. Combien de personnes sont disposées à retaper ce qu'elles voient dans une image? En outre, le terme _rows_ est étranger aux discussions de Stata tout comme les observations seraient des tableurs. –
Il y a une commande écrite par l'utilisateur appelé 'vlookup' dont l'approche que vous pourriez réutiliser, mais il ne fonctionnera pas impromptu. –
@NickCox ajouté. Désolé et merci! –