根据另一个变量的中值创建二元变量,按两个变量分组

Creating a binary variable based on the median of another variable, grouping by two variables

在 Stata 中,我想根据另一个变量 unemp 的中值创建一个二进制变量 median_unemp,将中值的计算按 regionyear。也就是说,当特定观察的失业率大于该地区和观察年份的失业中位数时,median_unemp为 1(否则为 0)。

考虑到整个数据集,下面的代码生成我的变量,但我希望中位数按子组计算(按 regionyear):

webuse productivity.dta, clear
summarize unemp, detail
gen median_response = r(p50)
gen median_unemp = (unemp>=median_response)
replace median_unemp =. if unemp==.

在仔细检查数据后,我想知道 unemp 对于我的数据集的观察 1(即 region=1 和 year=1970)是否是大于 median_unemp 的值(针对 region=1 和 year=1970 计算)等等。如果大于中位数,则median_unemp==1。如果低于中位数,则median_unemp==0.

webuse productivity.dta, clear
egen median_unemp = median(unemp), by(region year)
gen high_unemp = (unemp >= median_unemp) if unemp < .

在此数据集中,unemp 没有缺失值,但分离缺失值是一种很好的做法。每个中位数是 9 个值中的第 5 个值,因此抛开并列,4 个值将小于中位数,5 个大于或等于中位数。