⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mkspline.ado

📁 是一个经济学管理应用软件 很难找的 但是经济学学生又必须用到
💻 ADO
字号:
*! version 1.1.2  23sep2004
program define mkspline
	version 6, missing
	gettoken name 0 : 0, parse(" =")
	gettoken n 0 : 0, parse(" =") 
	gettoken eqsign : 0, parse(" =") 
	if "`eqsign'" == "=" { 			/* newstub # = ... */
		gettoken eqsign 0 : 0, parse(" =") 
		local hold
		confirm integer number `n'
		if `n'<2 { error 198 } 
		syntax varname [if] [in] [, Marginal Pctile]
		marksample touse
		if "`pctile'"=="" {
			quietly summ `varlist' if `touse'
			local base = r(min)
			local incr = (r(max)-r(min))/`n'
			local i 1
			while `i'<`n' {
				local base = `base' + `incr'
				local fmted : dis string(`base', "%9.0g") 
				local arg "`arg' `name'`i' `fmted'"
				local i=`i'+1
			}
		}
		else {
			local base = 0 
			tempvar p
			local base 0
			local incr = 100/`n'
			local i 1
			while `i'<`n' {
				local base = `base' + `incr'
				capture drop `p'
				qui egen float `p' = pctile(`varlist') /*
					*/ if `touse', p(`base')
				qui summ `p'
				local fmted : di string(r(mean), "%9.0g")
				local arg "`arg' `name'`i' `fmted'"
				local i=`i'+1
			}
		}
		local arg "`arg' `name'`i'"
		mkspline `arg' = `varlist' if `touse', `margina'
		exit
	}

	/* newvar # newvar # ... newvar = ... */
	local i 0
	local last -1e+30
	while "`eqsign'" != "=" { 
		confirm new variable `name'
		confirm number `n' 
		if `n' <= `last' { error 198 } 
		local i = `i' + 1
		local v`i' "`name'"
		local n`i' `n'
		tempvar t`i'
		gettoken name 0 : 0, parse(" =")
		gettoken eqsign 0 : 0, parse(" =")
		if "`eqsign'"!="=" { 
			local n "`eqsign'"
		}
	}
	local n = `i' + 1
	confirm new variable `name'
	local v`n' `name'
	tempvar t`n'
	local n`n' .

	syntax varname [if] [in] [, Marginal]
	marksample touse
	if `n'<2 { error 198 } 

	if ("`margina'"!="") { 
		qui gen float `t1' = `varlist' if `touse'
		qui compress `t1'
		label var `t1' `"`varlist': (.,.)"'
		local last `n1'
		local i 2 
		while `i'<=`n' {
			qui gen float `t`i''=max(0,`varlist'-`last') if `touse'
			qui compress `t`i''
			local ttl : di "`varlist': (" `last' ",.)"
			label var `t`i'' "`ttl'"
			local last `n`i''
			local i=`i'+1
		}
	}
	else {
		qui gen float `t1' = min(`varlist',`n1') if `touse'
		qui compress `t1'
		local ttl : di "`varlist': (.," `n1' ")"
		label var `t1' "`ttl'"
		local last `n1'
		local i 2
		while `i'<=`n' {
			qui gen float `t`i'' = /*
				*/ max(min(`varlist',`n`i''),`last') - `last' /*
				*/ if `touse'
			qui compress `t`i''
			local ttl : di "`varlist': (`last'," `n`i'' ")"
			label var `t`i'' "`ttl'"
			local last `n`i''
			local i=`i'+1
		}
	}

	local i 1 
	while `i'<=`n' {
		rename `t`i'' `v`i''
		local i=`i'+1
	}
end

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -