如何在 Stata 中使用三个标准对面板数据集进行子集化?
How do I subset a panel data set with three criteria in Stata?
我有一个如下所示的面板数据集:
person_id
year
cash
222
2020q4
6,000
222
2021q1
7,000
222
2021q2
8,000
321
2020q4
4,000
321
2021q4
11,000
321
2021q2
15,000
我想对 2021 年第 2 季度人数 < 10,000 的 person_id 组的数据集进行子集化,并保留他们之前的所有观察结果,并删除没有的 person_id到 2021 年第二季度拥有那么多现金。我如何通过上述三个变量对这些数据进行子集化?
所以在这个例子中,我想保留 person_id 222 的所有观察结果,但删除 321 的所有观察结果。
感谢任何帮助。谢谢!
可能有更简洁的方法来做到这一点,但我会将其分为以下三个步骤:
clear
input int person_id str6 year int cash
222 "2020q4" 6000
222 "2021q1" 7000
222 "2021q2" 8000
321 "2020q4" 4000
321 "2021q4" 11000
321 "2021q2" 15000
end
*Test if obs has cash>10000 in 2021 q2
gen subset_obs = (cash > 10000 & year == "2021q2")
*By ID, get the max value in subset_obs to copy 1s to all rows for the ID
bysort person_id : egen subset_id = max(subset_obs)
*Keep only IDs with subset_id is 1
keep if subset_id == 1
我有一个如下所示的面板数据集:
person_id | year | cash |
---|---|---|
222 | 2020q4 | 6,000 |
222 | 2021q1 | 7,000 |
222 | 2021q2 | 8,000 |
321 | 2020q4 | 4,000 |
321 | 2021q4 | 11,000 |
321 | 2021q2 | 15,000 |
我想对 2021 年第 2 季度人数 < 10,000 的 person_id 组的数据集进行子集化,并保留他们之前的所有观察结果,并删除没有的 person_id到 2021 年第二季度拥有那么多现金。我如何通过上述三个变量对这些数据进行子集化?
所以在这个例子中,我想保留 person_id 222 的所有观察结果,但删除 321 的所有观察结果。
感谢任何帮助。谢谢!
可能有更简洁的方法来做到这一点,但我会将其分为以下三个步骤:
clear
input int person_id str6 year int cash
222 "2020q4" 6000
222 "2021q1" 7000
222 "2021q2" 8000
321 "2020q4" 4000
321 "2021q4" 11000
321 "2021q2" 15000
end
*Test if obs has cash>10000 in 2021 q2
gen subset_obs = (cash > 10000 & year == "2021q2")
*By ID, get the max value in subset_obs to copy 1s to all rows for the ID
bysort person_id : egen subset_id = max(subset_obs)
*Keep only IDs with subset_id is 1
keep if subset_id == 1