📄 nlogitgen.ado
字号:
*! version 7.0.4 04apr2005
program define nlogitgen
version 7.0
/* parse */
gettoken newvar 0 : 0, parse("= ")
confirm new var `newvar'
gettoken equal 0 : 0, parse("= ")
IsToken = `equal'
gettoken varname 0 : 0, parse(" (") match (par)
confirm numeric var `varname'
gettoken clist 0: 0, match(par) parse(", ")
IsToken ( `par'
local k 0
gettoken first clist : clist, parse(",")
while "`first'" != "" {
local k = `k' + 1
local first : subinstr local first "|" " ", all
local group`k' `first'
gettoken comma clist : clist, parse(",")
gettoken first clist : clist, parse(",")
}
if `k' < 2 {
dis as err "two or more branches are required"
exit 198
}
syntax [, noLOg]
if "`log'" != "" { local log qui }
/* END parsing */
/* BEGIN generate newvar */
tempvar tempnew
qui gen `tempnew' = .
local label
forvalue i = 1/`k' {
gettoken labnew rest : group`i', parse(":")
/* define label
default `varname'`i' */
if "`rest'" == "" {
local templab = substr("`newvar'", 1, 30)
local rest `labnew'
local label `label' `i' `templab'`i'
}
else {
local label `label' `i' `labnew'
gettoken colon rest : rest, parse(":")
}
local lab : value label `varname'
foreach x of local rest {
cap confirm number `x'
if _rc {
local y : dis ("`x'":`lab')
}
else local y `x'
qui count if `varname' == `y'
if r(N) == 0 {
dis as err "no obs for `varname' == `x'"
exit 198
}
qui replace `tempnew' = `i' if `varname' == `y'
}
}
local labname = substr("lb_`newvar'", 1, 32)
qui gen `newvar' = `tempnew'
`log' dis as txt "new variable `newvar' is generated with `k' groups"
label define `labname' `label'
label values `newvar' `labname'
`log' dis `"label list `labname'"'
`log' label list `labname'
end
program define IsToken
args exp opt
if "`exp'" != "`opt'" {
dis as err "`opt' found where `exp' expected"
exit 198
}
end
exit
syntax
nlogitgen newvar = varname(choicelist)
where
choicelist := choice, choice [, choice ...]
choice := [label:] outcome [| outcome[| outcome ...] ]
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -