Bookmark and Share

Notice: On March 31, it was announced that Statalist is moving from an email list to a forum. The old list will shut down on April 23, and its replacement, statalist.org is already up and running.


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

RE: st: foreach question


From   "Martin Weiss" <martin.weiss1@gmx.de>
To   <statalist@hsphsun2.harvard.edu>
Subject   RE: st: foreach question
Date   Sun, 22 Aug 2010 22:45:02 +0200

<>

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: owner-statalist@hsphsun2.harvard.edu
[mailto:owner-statalist@hsphsun2.harvard.edu] On Behalf Of David Torres
Sent: Sonntag, 22. August 2010 22:39
To: statalist@hsphsun2.harvard.edu
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 <ebooth@ppri.tamu.edu>:

> <>
>
> 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
> ebooth@ppri.tamu.edu
> 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/


© Copyright 1996–2014 StataCorp LP   |   Terms of use   |   Privacy   |   Contact us   |   Site index