Notice: On April 23, 2014, Statalist moved from an email list to a forum, based at statalist.org.
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
RE: st: foreach question
From
David Torres <[email protected]>
To
[email protected]
Subject
RE: st: foreach question
Date
Sun, 22 Aug 2010 17:40:27 -0400
Thanks for the article.
My original question was a general one about reordering values across
variables. I was referencing the data previously mentioned, though I
was using the wide format. I do have the data in long format, but
could not figure out how to sort my begin and end job variables
together across years and job numbers. I also needed to be able to
make sure that the employer id and hourly compensation variables are
also aligned with the correct job begin and end dates. While I need
to sort by id, I also have to sort within year. That's the difficult
part for a young stata user like myself.
Very confusing, I know, but thanks for the help you've given thus far.
Diego
Quoting Martin Weiss <[email protected]>:
<>
Maybe I am missing the point, but where is the relation to your original
question some posts ago? Anyway, -sort-ing within "id" is best accomplished
via -bysort-, as in NJC`s
http://www.stata-journal.com/sjpdf.html?articlenum=pr0004
I think you should separate "year_jobnum" and hold it as two numeric vars:
***
clear*
inp str6 year_jobnum
1997_1
1997_2
1997_3
1998_1
1998_2
1998_3
1997_1
1997_2
1997_3
1998_1
1998_2
1998_3
1997_1
1997_2
1997_3
1998_1
1998_2
end
split year_jobnum, parse(_) destring
ren year_jobnum1 year
ren year_jobnum2 jobnum
list, noo
***
HTH
Martin
-----Original Message-----
From: [email protected]
[mailto:[email protected]] On Behalf Of David Torres
Sent: Sonntag, 22. August 2010 23:10
To: [email protected]
Subject: RE: st: foreach question
Martin,
I originally did have the date in long format (see my yet unanswered
question of yesterday).
I'm using the NLSY97 employment data. I've reshaped wide to long
using the string option because I have several jobs per year for
several years of data. The year_jobnum is my string variable.
id year_jobnum stjob endjob employerid
1 1997_1 01Jan1996 06July1997 9701
1 1997_2
1 1997_3
1 1998_1 01Jan1996 25June1998 9701
1 1998_2 10June1997 19Aug1997 9801
1 1998_3
2 1997_1 15Sept1996 30June1997 9713
2 1997_2
2 1997_3
2 1998_1 22Jan1997 15July1998 9820
2 1998_2
2 1998_3
3 1997_1
3 1997_2
3 1997_3
3 1998_1 11Oct1997 30July1998 9816
3 1998_2 30May1997 25Aug1997 9846
3 1998_3
I hope this is more challenging for you, sir. And, again, I
appreciate your assistance. While currently the data are odered in
each year according to end date of job (most recent or current
employer is listed in slot 1), I want to reorder according to begin
job date. This seems the easiest way to backfill data for missing
years since jobs held since date of last interview are asked in all
rounds, meaning that income information can be gathered for missed
years as long as a job was worked.
Thanks,
D
Quoting Martin Weiss <[email protected]>:
<>
This new info makes my -reshape- solution more attractive. I seriously
doubt
that you want to work in wide format with this kind of data. Take a look
at
the long data, and see whether it facilitates your analysis:
***********
clear*
inp str10(Startjob1 Startjob2 Endjob1 Endjob2)
01Jan1997 05June1997 24Dec1997 02Sept1997
end
gen byte id=1
reshape long Startjob Endjob, i(id) j(number)
drop id
list, noo
***********
HTH
Martin
-----Original Message-----
From: [email protected]
[mailto:[email protected]] On Behalf Of David Torres
Sent: Sonntag, 22. August 2010 22:39
To: [email protected]
Subject: Re: st: foreach question
To complicate things a bit more, what if date1 and date2 and date3 and
date4 represent, respectively, begin and end dates for employment.
Startjob1 Startjob2 Endjob1 Endjob2
01Jan1997 05June1997 24Dec1997 02Sept1997
Is there a way to sort both together so the correct start and end
dates remain together? The data I am using are currently sorted on
endjob dates, such that the most recent employment (i.e., at time of
interview) is listed in job#1 slot. As you can see, however,
sometimes a start date may precede another start date, while the end
dates are actually reversed.
Thanks in advance.
Quoting Eric Booth <[email protected]>:
<>
I think this is what you are asking:
******!
clear
inp str12(Date1 Date2 Date3 Date4)
23July1997 01Jan1997 12Sept1997 03Feb1997
05July1997 04July1997 03July1997 02July1997
end
ds
foreach v in `r(varlist)' {
g `v'2 = date(`v', "DMY")
format `v'2 %td
drop `v'
rename `v'2 `v'
}
g id = _n
reshape long Date, i(id) j(n)
sort Date
g new = _n
drop n id
g id = 1
reshape wide Date, i(id) j(new)
drop id
li
******!
~ Eric
__
Eric A. Booth
Public Policy Research Institute
Texas A&M University
[email protected]
Office: +979.845.6754
On Aug 22, 2010, at 2:54 PM, David Torres wrote:
Is there a way to sort or reorder dates using the foreach
command--perhaps using the egen function in the loop or something?
How do I get:
Date1 Date2 Date3 Date4
23July1997 01Jan1997 12Sept1997 03Feb1997
to be ordered thusly:
Date1 Date2 Date3 Date4
01Jan1997 03Feb1997 23July1997 12Sept1997
Thanks,
--
David Diego Torres
*
* For searches and help try:
* http://www.stata.com/help.cgi?search
* http://www.stata.com/support/statalist/faq
* http://www.ats.ucla.edu/stat/stata/
*
* For searches and help try:
* http://www.stata.com/help.cgi?search
* http://www.stata.com/support/statalist/faq
* http://www.ats.ucla.edu/stat/stata/
*
* For searches and help try:
* http://www.stata.com/help.cgi?search
* http://www.stata.com/support/statalist/faq
* http://www.ats.ucla.edu/stat/stata/
*
* For searches and help try:
* http://www.stata.com/help.cgi?search
* http://www.stata.com/support/statalist/faq
* http://www.ats.ucla.edu/stat/stata/
*
* For searches and help try:
* http://www.stata.com/help.cgi?search
* http://www.stata.com/support/statalist/faq
* http://www.ats.ucla.edu/stat/stata/
*
* For searches and help try:
* http://www.stata.com/help.cgi?search
* http://www.stata.com/support/statalist/faq
* http://www.ats.ucla.edu/stat/stata/
*
* For searches and help try:
* http://www.stata.com/help.cgi?search
* http://www.stata.com/support/statalist/faq
* http://www.ats.ucla.edu/stat/stata/