Alvine wrote:
 
I have a date set with 1 line per patient, and many measures by patient
(mes1, mes2, mes3, ...). The number of measurement is given by the nb_mes
variable.
 
id mes1 mes2 mes3  mes4 nb_mes
1  30  21  25  46  4
2  26  24    2
3  14  15  13   3
 
For each patient, I would like to calculate the difference :
 mes2-mes1, mes3-mes, ..., until : mes`nb_mes'-mes1
 
I've tried this:
 
forvalues i=2/`nb_dos' {
local im1=`i'-1
gen diff`im1'=mes`i'-mes1
}
------------------------------------------------------
 
What is nb_dos? Do you mean nb_mes?
 
Even `nb_mes' does not work; nb_mes is a variable, and you can 
not treat it as a local macro which is a kind of constant.
You must know something about the maximum number of measurements
(below I assume 4), so just:
 
   clear
   input id mes1 mes2 mes3 mes4
   1 30 21 25 46
   2 26 24  .  .
   3 14 15 13  .
   end
 
   forvalues i=2/4 {
      gen diff`i'=mes`i'-mes1
   }
 
   list, clean
       id   mes1   mes2   mes3   mes4   diff2   diff3   diff4  
  1.    1     30     21     25     46      -9      -5      16  
  2.    2     26     24      .      .      -2       .       .  
  3.    3     14     15     13      .       1      -1       .  
 
(I suggest that you name the difference mes7-mes1 diff7, not diff6)
 
Hope this helps
Svend
 
 
________________________________________________________ 
 
Svend Juul
Institut for Folkesundhed, Afdeling for Epidemiologi
(Institute of Public Health, Department of Epidemiology)
Vennelyst Boulevard 6 
DK-8000 Aarhus C,  Denmark 
Phone, work:  +45 8942 6090 
Phone, home:  +45 8693 7796 
Fax:          +45 8613 1580 
E-mail:       [email protected] 
_________________________________________________________ 
*
*   For searches and help try:
*   http://www.stata.com/support/faqs/res/findit.html
*   http://www.stata.com/support/statalist/faq
*   http://www.ats.ucla.edu/stat/stata/