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, is already up and running.

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

Re: st: Event within dates

From   David Kantor <>
Subject   Re: st: Event within dates
Date   Thu, 01 Dec 2011 15:51:01 -0500

The following might work. It is an attempt to fill in some features that were needed in your method. But it is somewhat brute-force in its approach. It does looping over observations (doubly), which is rarely needed. There is probably a much better way to do this (involving -by-, for one), but this is all I can do at the moment.

forval i = 1/ `N' {
        forval j = 1/ `N' {
replace rs1=1 if drug[`i]==1 & id[`i']==id[`j'] & inrange(date[`i'] - date[`j'],-56,56) in `i'

At 02:15 PM 12/1/2011, David Kpento wrote:
I have prescription data in panel format for analysis. I wish to generate an indicator rs to be 1 for any subject who took drug2 within 56 days of taking drug1 (either before or after). Could somebody please help me with any code? I am new to Stata so have struggled with this for days.

I use Stata/SE 9.0 for Windows.

Many thanks

input id str9 date drug rs
1 08apr2009 1 0
1 08may2009 1 0
1 08jun2009 2 1
2 02jan2009 1 0
2 28jan2009 2 1
2 05apr2009 1 0
3 07jan2009 2 1
3 22mar2009 1 0
3 02jul2009 1 0

I have a code like this after formatting the date into a Stata date but rs1 is all zeros.

gen date1 = date(date, "dmy")
format date1 %d
drop date
rename date1 date

g rs1=0
local N=_N
forval i = 1/ `N' {
replace rs1=1 if drug==1 & id[`i'] & inrange(date[`i'] - date,-56,56) in `i'

*   For searches and help try:

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