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: Carry forward an observation within a time frame
From
Robert Picard <[email protected]>
To
"[email protected]" <[email protected]>
Subject
Re: st: Carry forward an observation within a time frame
Date
Wed, 9 Oct 2013 11:36:23 -0400
Sorry, just noticed that I accidentally hit a key just before copying
the code, the before last line should read:
by patid arun: gen CD4_cf = CD4[1] if edate-edate[1] < 120
Robert
On Wed, Oct 9, 2013 at 11:22 AM, Robert Picard <[email protected]> wrote:
> I think the following will work for you.
>
> Robert
>
> * ------------------ begin example --------------
> clear
> input patid str20 sdate CD4
> 1007 "5-May-55" .
> 1007 "1-Jan-00" .
> 1007 "3-Apr-02" 5
> 1007 "8-Apr-02" .
> 1007 "11-Apr-02" .
> 1007 "13-May-02" .
> 1007 "14-May-02" 4
> 1007 "17-Jun-02" 9
> 1007 "12-Nov-02" .
> 1007 "27-Jan-03" 6
> 1007 "17-Mar-03" .
> 1007 "14-Apr-03" 0
> 1007 "30-May-02" .
> 1007 "30 Jun-02" .
> 1007 "30-Jul-02" .
> 1007 "30-Aug-02" .
> 1008 "27-Jan-03" 6
> 1008 "17-Mar-03" .
> end
>
> gen obs = _n
> gen edate = date(sdate,"DMY",2019)
> format %d edate
> list
>
> * if there are more than one obs per date, put
> * obs with a non-missing CD4 code last
> gen isgood = !mi(CD4)
> sort patid edate isgood CD4 obs
>
> * each valid code starts a new run
> by patid: gen arun = sum(isgood)
>
> * carry forward the valid code within a run
> sort patid arun edate isgood CD4 obs
> by patid arun: gen CD4_cf = CD4[1] if edate-edate[1] < 120x
> list, noobs sepby(patid arun)
> * ------------------ end example ----------------
>
> On Wed, Oct 9, 2013 at 10:45 AM, Benigno Rodriguez, MD
> <[email protected]> wrote:
>> Dear David:
>>
>> Thank you for this detailed response. But my problem is that I need to carry
>> forward to a given row with a missing CD4 the closest in time CD4 value, as
>> long as it is within the previous 4 months (the last 120 days is enough
>> precision for my purposes).
>>
>> Correct me if I'm thinking about this wrong, but with your approach, a value
>> could be propagated down even if the "seed" for that value occurred more
>> than 4 months earlier. I have added a few rows (artificially) to illustrate.
>> Look at row 10. It occurs within 4 month of row[_n-1], but I don't want it
>> filled out with that value, because the last time we actually had a
>> non-missing value was in row 3, which is more than 4 months prior to row 10.
>>
>> The approach I was trying was to try to define a "spell" as one that begins
>> with a missing CD4 AND for which the row above has a non-missing value
>> (easily done). But implementing the solution from there has proven
>> challenging.
>>
>>
>> patid date CD4 desired
>> 1. 1007 5-May-55 . .
>> 2. 1007 1-Jan-00 . .
>> 3. 1007 3-Apr-02 5 5
>> 4. 1007 8-Apr-02 . 5
>> 5. 1007 11-Apr-02 . 5
>> 6. 1007 13-May-02 . 5
>> 7. 1007 30-May-02 . 5
>> 8. 1007 30 Jun-02 . 5
>> 9. 1007 30-Jul-02 . 5
>> 10. 1007 30-Aug-02 . .
>>
>>
>> BENIGNO RODRIGUEZ G., MD, MSc, FIDSA
>> Associate Professor of Medicine
>> Division of Infectious Diseases and HIV Medicine
>> Case Western Reserve University
>> Ph: +1-216-844-2057
>> Fax: +1-216-8445523
>> *
>> * 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/