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:22:19 -0400
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/