ch12.5.do open
file:script:do
| # | content |
|---|---|
| 1 [+] | * ITSP 12.5 - |
| 3 [+] | program drop _all |
/* *! onespell 1.1.1 CFBaum 13jan2005 * locate units with internal gaps in varlist and zap all but longest spell program onespell, rclass version 8.2 syntax varlist(numeric) [if] [in], Saving(string) [ REPLACE NOIsily] preserve quietly tsset local pv "`r(panelvar)'" local tv "`r(timevar)'" summarize `pv', meanonly local n1 = r(N) tsfill marksample touse tempvar testgap spell seq end maxspell keepspell wantspell |
|
| 49 [+] | webuse grunfeld , |
| 50 [+] | quietly replace invest = . in 28 |
| 51 [+] | quietly replace mvalue = . in 55 |
| 52 [+] | quietly replace kstock = . in 87 |
| 53 [+] | quietly replace kstock = . in 94 |
| 54 [+] | onespell invest mvalue kstock , |
| 56 [+] | use grun1 , |
| 57 [+] | tab company |
* ITSP 12.5 -
program drop _all
/*
*! onespell 1.1.1 CFBaum 13jan2005
* locate units with internal gaps in varlist and zap all but longest spell
program onespell, rclass
version 8.2
syntax varlist(numeric) [if] [in], Saving(string) [ REPLACE NOIsily]
preserve
quietly tsset
local pv "`r(panelvar)'"
local tv "`r(timevar)'"
summarize `pv', meanonly
local n1 = r(N)
tsfill
marksample touse
tempvar testgap spell seq end maxspell keepspell wantspell
local sss "quietly"
if "`noisily'" == "noisily" {
local sss "noisily"
}
`sss' {
* testgap is panelvar if obs is usable, 0 otherwise
generate `testgap' = cond(`touse',`pv',.)
tsspell `testgap' if `testgap'<., spell(`spell') seq(`seq') end(`end')
drop if `spell'==0 | `touse'==0
* if `spell' > 1 for a unit, there are gaps in usable data
* calculate max length spell for each unit and identify
* that spell as the one to be retained
egen `maxspell'= max(`seq'), by(`pv')
bysort `pv': generate `keepspell' = cond(`seq'==`maxspell',`spell',0)
egen `wantspell' = max(`keepspell'), by(`pv')
* in case of ties, latest spell of max length is selected
list `pv' `tv' `spell' `seq' `maxspell' `keepspell' `wantspell', sepby(`pv')
summarize `spell' `wantspell'
keep if `wantspell' == `spell'
summarize `pv', meanonly
local n2 = r(N)
drop __*
}
display _n "Observations removed: " `n1'-`n2'
save `saving',`replace'
restore
end
*/
webuse grunfeld, clear
quietly replace invest = . in 28
quietly replace mvalue = . in 55
quietly replace kstock = . in 87
quietly replace kstock = . in 94
onespell invest mvalue kstock, saving(grun1) replace
use grun1, clear
tab company