悬赏 100 个论坛币 未解决
cap program drop bys_box
program define bys_box,byable(onecall) sortpreserve
version 13.0
tempvar anchor_var
gen `anchor_var' = _n
tempvar group
qui if _by() {
egen `group' = group(`_byvars')
}
qui else {
gen `group' = 1 //用户没有分组==只有一组
}
qui sum `group'
local ng=r(max) //算出总组数目
tempfile ware_file //用来储存计算结果的仓库文件
forvalue i=1/`ng' {
preserve
qui keep if `group'==`i'
cluster kmeans y d k s q gender, k(2) measure(L2) start(segments) iterate(2)
if `i'!=1 {
qui append using "`ware_file'"
}
qui save "`ware_file'" , replace
restore
}
qui merge 1:1 `anchor_var' using "`ware_file'" , nogen
end