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: Calculating span exculsive of the current spell


From   Rebecca Pope <rebecca.a.pope@gmail.com>
To   statalist@hsphsun2.harvard.edu
Subject   Re: st: Calculating span exculsive of the current spell
Date   Mon, 10 Jun 2013 08:55:25 -0500

If you really want a span variable for each value of X, I'd use
-forvalues- rather than typing the same command with different -if-
conditions.

forvalues x = 1/3 {
   bys ID X (Start): gen span`x' = sum(End[_n-1] - Start[_n-1]) if X==`x'
}

list, noobs clean

     ID   Start    End   X   span1   span2   span3
    433    1987   1990   1       0       .       .
    433    1990   1992   1       3       .       .
    433    1994   1997   1       5       .       .
    433    1992   1994   2       .       0       .
    433    2000   2004   2       .       2       .
    433    1997   2000   3       .       .       0
    433    2004   2006   3       .       .       3

I'm not sure why you need to take up additional storage space by
having multiple span variables. If you decide you really don't need
multiple variables, you can just use a single line of code:

bys ID X (Start): gen span = sum(End[_n-1] - Start[_n-1])

For good general information about spans and durations, you might also
have a look at this FAQ from Nick Cox.
http://www.stata.com/support/faqs/data-management/identifying-runs-of-consecutive-observations/

Regards,
Rebecca

On Mon, Jun 10, 2013 at 7:50 AM, Kai Huang <demonsecret@hotmail.com.hk> wrote:
> Dear all,
>
> I have a spell dataset as follows:
> ID   Start   End     X
> 433  1987   1990     1
> 433  1990   1992     1
> 433  1992   1994     2
> 433  1994   1997     1
> 433  1997   2000     3
> 433  2000   2004     2
> 433  2004   2006     3
> where x is a dummy indicating activity status. I have the following commands for calculating the span of the respondent in each status:
> gen span=End-Start
> by ID: gen span1=sum(span) if X==1
> by ID: gen span2=sum(span) if X==2
> by ID: gen span3=sum(span) if X==2
> drop duration
> 3 new variables are added to the dataset:
> ID   Start   End     X   span1  span2  span3
> 433  1987   1990     1     3      .      .
> 433  1990   1992     1     5      .      .
> 433  1992   1994     2     .      2      .
> 433  1994   1997     1     7      .      .
> 433  1997   2000     3     .      .      3
> 433  2000   2004     2     .      6      .
> 433  2004   2006     3     .      .      5
> The above commands calculate the span including the current spell. I would like to know how can we calculate the span excluding the current spell so that we have the following values instead:
> ID   Start   End     X   span1  span2  span3
> 433  1987   1990     1     0      .      .
> 433  1990   1992     1     3      .      .
> 433  1992   1994     2     .      0      .
> 433  1994   1997     1     5      .      .
> 433  1997   2000     3     .      .      0
> 433  2000   2004     2     .      2      .
> 433  2004   2006     3     .      .      3
> Thank you very much in advance.
> Best regards,
> Kai Huang
> *
> *   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–2014 StataCorp LP   |   Terms of use   |   Privacy   |   Contact us   |   Site index