Notice: On April 23, 2014, Statalist moved from an email list to a forum, based at statalist.org.
From | Irene Ferrari <irene.ferrari85@gmail.com> |
To | statalist@hsphsun2.harvard.edu |
Subject | st: Average of last two previous observations conditional on another variable value |
Date | Mon, 24 Mar 2014 14:15:53 +0100 |
Dear Statalisters, I am a new statalister and I would greatly appreciate if you could give me advice on something which seems trivial to explain, less trivial to translate in Stata code. I have a panel dataset, and I would like to perform the average (variable "average") of the last two previous in time observations of "y" whose corresponding dummy variable ("dummy") is equal to 1. Example: -------------------------------------------------------------- id year dummy y average 1 1990 0 10 . 2 1991 0 11 . 3 1992 1 12 . 4 1993 1 13 . 5 1994 0 14 12.5 6 1995 0 15 12.5 7 1996 1 16 12.5 8 1997 1 17 14.5 9 1998 1 18 16.5 10 1999 0 19 17.5 -------------------------------------------------------------- So, for example, when computing the average for year 1996, I need the programme to search back the two previous y such that the corresponding dummy is equal to 1, which are y==12 and y==13, and then compute the average. Here is the latest code (of many) I was trying, with no success (it seems stuck in an infinite loop...): replace average = . local k=1 local r=0 local N = _N local z=1 forvalues i = 1/`N' { while `k'<=2 { if dummy[`i'-`z'] == 1 { local r= `r'+ y[`i'-`z'] local k=`k'+1 local z=`z'+1 } else { local z=`z'+1 } } replace average=(`r'/2) in `i' local k=1 local r=0 local z=1 } I have never needed to perform complicated programming in Stata, so it is totally possible I am missing something obvious. Thanks for your consideration. Irene Ferrari PhD Student - Department of Economics University of Bologna * * 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/