📄 _gcut.ado
字号:
*! version 2.0.8 01oct2004
program define _gcut
version 7, missing
syntax newvarname(gen) =/exp [if] [in] /*
*/ [, AT(numlist asc) Group(real 0) ICodes Label BY(string)]
if `"`by'"' != "" {
_egennoby cut() `"`by'"'
}
cap qui sum `exp', meanonly
if _rc~=0 {
di as err "cut`exp'invalid, variable name expected"
exit 198
}
if "`at'"=="" & `group'==0 {
di as err "one of at() or group() must be specified"
exit 198
}
if "`at'"!="" & `group'!=0 {
di as err "cannot specify both at() and group() option"
exit 198
}
tempvar touse pctile x
qui gen `typelist' `x' = `exp'
if "`at'" != "" {
local n : word count `at'
local top : word `n' of `at'
qui replace `x' = . if `x' >= `top'
}
marksample touse, novarlist
markout `touse' `x'
if "`at'"=="" & `group'!=0 & "`icodes'"=="" {
local icodes "icodes"
}
if "`label'"!="" & "`icodes'"=="" {
local icodes "icodes"
}
local vlbl "$EGEN_Varname"
local vlablen : label `vlbl' maxlength
if `vlablen' != 0 { /* a variable label named `vlbl' already exists */
/* we will find another name to use */
local chop = length("`vlbl'") - 1
local ends = "abcdefghijklmnopqrstuvwxyz0123456789" + /*
*/ "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
forvalues j = 1/62 {
local vlbl = substr("`vlbl'",1,`chop') + /*
*/ substr("`ends'",`j',1)
local vlablen : label `vlbl' maxlength
if `vlablen' == 0 { /* we found an unused one */
continue, break
}
}
}
if "`at'"=="" {
qui summ `x', meanonly
tempname extra
scalar `extra' = r(min)
local at "`extra'"
qui pctile `pctile' = `x' if `touse', nq(`group')
local grm1 = `group' - 1
forvalues count = 1/`grm1' {
tempname extra
scalar `extra' = `pctile'[`count']
local at "`at' `extra'"
}
qui summ `x' if `touse', meanonly
tempname extra
scalar `extra' = r(max)+1
local at "`at' `extra'"
}
local i=0
foreach cutp of local at {
if "`icodes'"=="" {
qui replace `varlist' = `cutp' /*
*/ if `x' >= `cutp' & `touse'
}
else {
qui replace `varlist' = `i' /*
*/ if `x' >= `cutp' & `touse'
}
if `i'>=0 & "`label'"!="" & "`icodes'" != "" {
local code = `i'
local slcut = string(`cutp')
label define `vlbl' `code' "`slcut'-", add
}
local i=`i'+1
}
if "`label'"!="" {
label values `varlist' `vlbl'
}
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -