Bookmark and Share

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: Looping within a subset under a certain condition


From   "Gerard Solbrig" <[email protected]>
To   <[email protected]>
Subject   RE: st: Looping within a subset under a certain condition
Date   Sun, 30 Sep 2012 11:18:06 +0200

That sure is correct. Please see my reply to Pengpeng on that matter. So
far, I've only focused on getting the rep_ins indicator to work at all, but
multiple windows for one firm is an additional concern. Ideally, a code
would indicate for each rep = 0 case within which of these windows the
observation's 'trandate' lies...

Here's the last version of my code (without inclusion of your earlier
suggestion and the multiple window problem):

forvalues x = 1/`max' {
	summarize obs, meanonly
	local N = r(N)
	forvalues i = 1/`N' {
		if rep == 1 {
		local r = `i'
		local s = `i'+1
		forvalues z = `s'/`N' {
			if trandate >= wind_start[`r'] & trandate <=
wind_end[`r'] {
			replace rep_ins = 1 in [`z']
			}
			else {
			replace rep_ins = 0 in [`z']
			}
		}
	}
}
}
replace rep_ins = . if rep == 1



-----Original Message-----
From: [email protected]
[mailto:[email protected]] On Behalf Of Nick Cox
Sent: Sonntag, 30. September 2012 11:10
To: [email protected]
Subject: Re: st: Looping within a subset under a certain condition

The other thing I wasn't clear on your rules for combining two or more
windows for the same firm. The code example I gave just uses the overall
range of the windows, but that would include any gaps between windows. Thus
if a < b < c < d and there are windows [a,b] and [c,d] then the combined
window [a, d] includes a gap [b, c].

On Sun, Sep 30, 2012 at 9:56 AM, Gerard Solbrig
<[email protected]> wrote:
> My bad, sorry! Of course, the observation 5apr2004 should not be 
> considered in the window, as it lies outside of the range between 
> 'wind_start' and 'wind_end'. Despite, it seems you've understood my
problem correctly.
>
> I'll try to incorporate your suggestion into a solution and see 
> whether it helps finding a solution. I will post an update on the matter
later.
>
> Thanks so far!
>
>
> -----Original Message-----
> From: [email protected]
> [mailto:[email protected]] On Behalf Of Nick Cox
> Sent: Sonntag, 30. September 2012 01:13
> To: [email protected]
> Subject: Re: st: Looping within a subset under a certain condition
>
> I had another look at this. I still don't understand your problem 
> exactly (e.g. why is the second obs at 5apr2004 considered in window), 
> but the technique here may help.
>
> egen first_start = min(wind_start), by(firm_id) egen last_end = 
> max(wind_end), by(firm_id)
>
> gen in_window = inrange(date, first_start, last_end)
>
> egen all_0_in_window = min(in_window) if rep == 0, by(firm_id)
>
> On the last line: on all <=> min, any <=> max, see
>
> FAQ     . . Creating variables recording whether any or all possess some
> char.
>         . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  N. J.
> Cox
>         2/03    How do I create a variable recording whether any
>                 members of a group (or all members of a group)
>                 possess some characteristic?
>                 http://www.stata.com/support/faqs/data/anyall.html
>
> Nick
>
> On Fri, Sep 28, 2012 at 9:45 PM, Gerard Solbrig 
> <[email protected]> wrote:
>>
>> I'm encountering a problem for which I seek your help.
>>
>> Let me start off with an example from my data (what I want it to look 
>> like in the end), before I explain my particular problem.
>>
>> firm_id date            rep     wind_start              wind_end
>> rep_ins
>>
>> firm1           01jan2000       0       .                       .
>> 0
>> firm1           05apr2004       0       .                       .
>> 1
>> firm1           01nov2004       1       05may2004               30may2005
>> .
>> firm1           10dec2004       0       .                       .
>> 1
>> firm1           01jan2006       0       .                       .
>> 0
>> firm2           30dec1999       1       03jul1999               27jul2000
>> .
>> firm2           05jan2000       1       09jul1999               02aug2000
>> .
>> firm2           06jun2000       0       .                       .
>> 1
>>
>> Each firm in my data has a 'firm_id'. Variable 'date' refers to an 
>> event date. The 'rep' dummy indicates the type of event.
>> I set 'wind_start' and 'wind_end' as period around the event 
>> (-180days,+210days), in case it's a rep = 1 type event.
>>
>> Now, I would like the 'rep_ins' dummy to indicate (i.e., rep_ins = 
>> 1), whether the date of all other observations of this firm (where 
>> rep =
>> 0) lies within the range determined by 'wind_start' and 'wind_end'
>> (which is conditional upon the 'rep' dummy).
>>
>> I've come across looping over observations and tried to design a 
>> solution for this problem based on that, but failed to do so. I 
>> assume the solution also depends on sorting the data in a special way.
>>
>> Here's the first part of my .do-file:
>>
>> gen wind_start = date-180 if rep == 1 gen wind_end = date+210 if rep 
>> == 1 format wind_start %d format wind_end %d gsort +cusip6 +date 
>> +trandate gen rep_ins = 0 if rep != 1
>>
>> I tried to come up with a solution by adding variables 'per_start' 
>> and 'per_end' for all rep = 0:
>>
>> gen per_start = date-180 if rep == 0
>> gen per_end = date+180 if rep == 0
>> format per_start %d
>> format per_end %d
>>
>> To mark the period within which the rep = 1 event can lie. Maybe this 
>> could contribute to finding a solution as well.
> *
> *   For searches and help try:
> *   http://www.stata.com/help.cgi?search
> *   http://www.stata.com/support/faqs/resources/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/faqs/resources/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/faqs/resources/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/faqs/resources/statalist-faq/
*   http://www.ats.ucla.edu/stat/stata/


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