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

st: Re: using vector notation to simplify coding

From   Dan Waldo <>
To   statalist <>
Subject   st: Re: using vector notation to simplify coding
Date   Wed, 12 Aug 2009 06:34:09 -0700 (PDT)

Thanks to Martin and Michael for their kind replies.

The data I am using come from the 2008 Mexican Encuesta Nacional de Ingresos y Gastos de los Hogares ENIGH). Households are interviewed for 6 months in staggered panels, reflected in the values assigned to variables mes_1 through mes_6, e.g.
Freq.  Value
11576  7
34660  8
36142  9
27163  10
23731  .

For a panel first interviewed in February, the values of mes_1 through mes_6 are
    mes_1   mes_2   mes_3   mes_4   mes_5   mes_6 
1.      7       6       5       4       3       2 

To adjust the monetary figures reported in each month (ing_1 through ing_6) for the effects of inflation, I have a vector of scalars that represent consumer prices (where August is the numeraire), e.g.,

scalar jul08=0.9942
scalar ago08=1.0000
scalar sep08=1.0068
scalar oct08=1.0136

So, if mes_1 were 7, I would divide the value in ing_1 by the July scalar 0.9942; if mes_1 were 10, I would divide by 1.0136

I suppose that I could write

.replace ing_1=ing_1/def_7 if mes_1==7
.replace ing_1=ing_1/def_8 if mes_1==8
.replace ing_1=ing_1/def_9 if mes_1==9
.replace ing_1=ing_1/def_10 if mes_1==10
.replace ing_2=ing_2/def_6 if mes_1==6
.replace ing_2=ing_2/def_7 if mes_1==7
.replace ing_2=ing_2/def_8 if mes_1==8
.replace ing_2=ing_2/def_9 if mes_1==9

but this seems so bulky and inelegant -- and this is where I thought a vector notation would help ... but Michael, if I understand his response correctly, feels that a loop of the sort

replace ing_`t'=ing`t'/DEF[mes_`t']

isn't going to happen.

Martin, does this clarify my question?


--- On Tue, 8/11/09, Dan Waldo <> wrote:

> From: Dan Waldo <>
> Subject: using vector notation to simplify coding
> To: "statalist" <>
> Date: Tuesday, August 11, 2009, 9:58 AM
> Dear Statalist members,
> I have data in monthly expenditures in variables ing_1
> through ing_6, and survey months in variables mes_1 through
> mes_6 (these vary from respondent to respondent). I wish to
> adjust the monthly expenditures for inflation, and I have
> deflation factors in variables def_1 through def_12.
> I am pretty accomplished in SAS, but only a novice in
> Stata. In SAS I would say:
> array def {12} def_1 - def_12;
> array ing {6} ing_1 - ing_6;
> array mes {6} mes_1 - mes_6;
> do t=1 to 6;
>    month=mes{t};
>    ing{t}=ing{t}/def{month};
>    end;
> I have been searching unsuccessfully for the Stata analogue
> to this; I am sure it is written somewhere and I am just not
> using the best search terms.
> Will somebody please point me to the proper place?
> Thanks!


*   For searches and help try:

© Copyright 1996–2017 StataCorp LLC   |   Terms of use   |   Privacy   |   Contact us   |   What's new   |   Site index