gen output = .
levelsof year, local(Y)
qui foreach y of local Y {
tempvar work
xtile `work' = input if year == `y', nq(5)
replace output = `work' if year == `y'
drop `work'
}
This also makes fewer assumptions about the
spacing of the years variable.
Nick
[email protected]
Nuno Soares
> I'm new at using the STATA programming capabilities and I'm
> having a problem
> with a function I'm trying to implement. The objective is to create a
> variable that is able to capture the year specific quintiles
> of a given
> variable into a new variable. Ex. Imagine we have a sample
> with the income
> of the subjects and the year it was surveyed. What I need is
> to get the
> quintile each individual belongs to according to his income,
> for each year,
> for all the years. The xtile command only allows to generate
> the desired
> classification for a each year at a time (and I have 20
> years, and i need to
> do this to several variables, for several breakpoints).
> The ado file I've written is the following:
> program qtex
> version 9.0
> args inputvar years outputvar start_year end_year qtiles
> quietly gen `outputvar' =.
> while `start_year'<=`end_year' {
> quietly gen xtile `_tempqt' = `inputvar' if `years' ==
> `start_year', nquantiles(`qtiles')
> quietly replace `outputvar' == `_tempqt' if
> `_tempqt' ~=.
> quietly drop `_tempqt'
> local start_year = `start_year' + 1
> }
> end
> The inputvar is the variable that is intended to be used for the
> classification; years is the variable which holds the year
> each observation
> belongs to; outputvar is the variable that will hold the
> classification for
> each observation; start_year and end_year the start and end
> periods that
> will be used as criteria for classification; qtiles the
> number of quantiles
> to be created.
> The message STATA returns is:
> invalid syntax
> r(197);
*
* For searches and help try:
* http://www.stata.com/support/faqs/res/findit.html
* http://www.stata.com/support/statalist/faq
* http://www.ats.ucla.edu/stat/stata/