只保留 Stata 中的某些行

Keeping only certain rows in Stata

我在 Stata 中有一个数据集,看起来像

Id | Var1 
------------------
1  | AMD  
1  | AMM  
1  | AMM
2  | AMM
3  | AMD
3  | AMD
4  | AMM
4  | AMM

我只想保留引用至少有一个 AMD 的 ID 的行。在这个例子中,我想得到

 Id | Var1 
 ------------------
 1  | AMD  
 1  | AMM  
 1  | AMM
 3  | AMD
 3  | AMD
gen amd=(Var1=="AMD")
egen B=total(amd==1), by(Id)
keep if B

我从问题中假设 Var1 只能包含 AMD AMM。如果是这样,完整的解决方案是

bysort Id (Var1): keep if Var1[1] == "AMD" 

无需创建任何其他变量。