Yan elaine Li
> 
> I would like to get help on the following problem:
> 
> i have a life history dataset on job mobility, where for each
> observation i have the following variables:
> 
> job01 start01 end01 indstr01 income01 ... job12 - income12 ...
> 
> where 'start01' means the starting year and 'end01' means the
> ending year of the first job.
> 
> I also have a variable 'yrmar' (year married), and my task is to
> find out what job a person had when s/he got married and how
> much they earn from that job and so on.
> 
> I tried the following code and it obviously doesn't work when
> you have a variable named "start01" instead of "start1":
> 
> gen jobmar=.
> gen incmar=.
> forvalues i=01(1)12 {
>   if (yrmar >= start`i' & yrmar<= end`i') {
>     replace jobmar=job`i'
>     replace incmar=income`i'
>   }
> }
> 
> I guess the central question is how to loop using strings/chars
> rather than number.
> 
Solution 1 
==========
You can fix this upstream by removing 
the leading zeroes from your variable names. 
foreach stub in job start end indstr income { 
	renvars `stub'0? \ `stub'1-`stub'9 
} 
and then go 
forvalues i=1/12 {
...
}
Here -renvars- is a program published in STB-60. 
Solution 2 
========== 
Or you can loop over strings by 
spelling them out 
foreach y in 01 02 03 04 05 06 07 08 09 10 11 12 { 
	...
} 
Simple, and quick in this example, but inelegant. 
Solution 3 
========== 
Or you could do this: 
forval j = 1/12 { 
	local i : di %02.0f `j'  
	<code in terms of `i'> 
}
The leading zero format puts a "0" in front 
of any single digit. 
Warning
======= 
However, there is a _big_ bug of a different kind 
now lurking in your code. 
if (yrmar >= start`i' & yrmar<= end`i') {
	replace jobmar=job`i'
	replace incmar=income`i'
} 
You don't mean what you write here, I guess. See
the FAQ 
I have an if command in my program that only seems to 
evaluate the first observation. What's going on?
http://www.stata.com/support/faqs/lang/ifqualifier.html
I think you need 
replace jobmar=job`i' if (yrmar >= start`i' & yrmar<= end`i') 
replace incmar=income`i'if (yrmar >= start`i' & yrmar<= end`i') 
Comment
=======
Many things are going to be easier if you -reshape- 
this data set to long. See [R] reshape and, if 
need be, the FAQ 
I am having problems with the reshape command. 
Can you give further guidance?
http://www.stata.com/support/faqs/data/reshape3.html
Nick 
[email protected] 
*
*   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/