Stata:按组保留第一个观察值
Stata: Keep the first observation by group
我有一个如下所示的数据集:
id firm earnings A
1 A 100 0
1 A 200 0
2 B 50 1
2 B 70 1
3 C 900 0
bys id firm,如果 A==0,我只想保留第一个观察结果,如果 A==1,我想保留所有观察结果。
我试过以下代码:
if A==0{
bys id firm: keep if _n==1
}
但是,无论 A 值是多少,此代码都会丢弃所有 _n>1 个观测值。
if (conditional) {do something}
语法用于控制流而不是定义变量。正如您现在所拥有的那样,Stata 仅测试第一行是否有 A==1
。尝试使用 and (&
) 或 or (|
) 语句添加其他条件。试试这个:
bys id firm: keep if (_n==1 & A==0) | A==1
我有一个如下所示的数据集:
id firm earnings A
1 A 100 0
1 A 200 0
2 B 50 1
2 B 70 1
3 C 900 0
bys id firm,如果 A==0,我只想保留第一个观察结果,如果 A==1,我想保留所有观察结果。
我试过以下代码:
if A==0{
bys id firm: keep if _n==1
}
但是,无论 A 值是多少,此代码都会丢弃所有 _n>1 个观测值。
if (conditional) {do something}
语法用于控制流而不是定义变量。正如您现在所拥有的那样,Stata 仅测试第一行是否有 A==1
。尝试使用 and (&
) 或 or (|
) 语句添加其他条件。试试这个:
bys id firm: keep if (_n==1 & A==0) | A==1