Bookmark and Share

Notice: On April 23, 2014, Statalist moved from an email list to a forum, based at

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

RE: st: foreach question

From   David Torres <>
Subject   RE: st: foreach question
Date   Sun, 22 Aug 2010 17:09:39 -0400


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.


Quoting Martin Weiss <>:


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:


inp str10(Startjob1 Startjob2 Endjob1 Endjob2)
01Jan1997 05June1997 24Dec1997 02Sept1997

gen byte id=1
reshape long Startjob Endjob, i(id) j(number)
drop id
list, noo


-----Original Message-----
[] On Behalf Of David Torres
Sent: Sonntag, 22. August 2010 22:39
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 <>:


I think this is what you are asking:

inp  str12(Date1          Date2         Date3         Date4)
23July1997    01Jan1997     12Sept1997     03Feb1997
05July1997	04July1997	03July1997	02July1997

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

~ Eric
Eric A. Booth
Public Policy Research Institute
Texas A&M University
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


David Diego Torres

*   For searches and help try:

*   For searches and help try:

*   For searches and help try:

*   For searches and help try:

*   For searches and help try:

© Copyright 1996–2017 StataCorp LLC   |   Terms of use   |   Privacy   |   Contact us   |   Site index