Stata 在数据子集内创建分位数假人
我正在尝试在我的数据组中创建性能的Stata 在数据子集内创建分位数假人,stata,quantile,Stata,Quantile,我正在尝试在我的数据组中创建性能的分位数 在此过程中,我使用xtile命令: sysuse auto.dta local outcomes mpg foreach outcome in `outcomes' { bysort foreign : xtile `outcome'_qtile = `outcome', n(4) } 但是,我得到以下错误: xtile may not be combined with by r(190); 有解决方法吗?您可以执行以下操作: clear s
分位数
在此过程中,我使用xtile
命令:
sysuse auto.dta
local outcomes mpg
foreach outcome in `outcomes' {
bysort foreign : xtile `outcome'_qtile = `outcome', n(4)
}
但是,我得到以下错误:
xtile may not be combined with by
r(190);
有解决方法吗?您可以执行以下操作:
clear
sysuse auto.dta
egen group = group(foreign)
summarize group
local outcomes mpg
foreach outcome in `outcomes' {
generate `outcome'_qtile = .
forvalues i = 1 / `r(max)' {
xtile temp_`outcome'_qtile = `outcome' if group == `i', n(4)
replace `outcome'_qtile = temp_`outcome'_qtile if group == `i'
drop temp_`outcome'_qtile
}
}
您可以执行以下操作:
clear
sysuse auto.dta
egen group = group(foreign)
summarize group
local outcomes mpg
foreach outcome in `outcomes' {
generate `outcome'_qtile = .
forvalues i = 1 / `r(max)' {
xtile temp_`outcome'_qtile = `outcome' if group == `i', n(4)
replace `outcome'_qtile = temp_`outcome'_qtile if group == `i'
drop temp_`outcome'_qtile
}
}
不需要在一个项目上循环。另请注意xtile()
来自egenmore
(SSC)。我之所以使用循环,是因为我正在处理的数据中有多个结果,但可能由于其包含在上述代码中而增加了额外和不必要的复杂性。我将看一看xtile()和egenmore-谢谢!你仍然需要一个多结果的循环xtile()
绕过了使用by
的限制:响应中没有缺失值和关联:bysort-foreign(结果):gen-xtile=ceil(4*\n/\n)
就足够了。不需要精确地在一个项目上循环。另请注意xtile()
来自egenmore
(SSC)。我之所以使用循环,是因为我正在处理的数据中有多个结果,但可能由于其包含在上述代码中而增加了额外和不必要的复杂性。我将看一看xtile()和egenmore-谢谢!你仍然需要一个多结果的循环xtile()
绕过了使用by
的限制:响应中没有缺失值和关联:bysort-foreign(结果):gen xtile=ceil(4*\n/\n)
就足够了。