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


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

st: egen rowmean, loops and if


From   Thomas Speidel <thomas@tmbx.com>
To   <statalist@hsphsun2.harvard.edu>
Subject   st: egen rowmean, loops and if
Date   Tue, 05 Apr 2011 14:01:38 -0700

where 	occ_~1_1 = occ_met1_1
	occ_~2_1 = occ_met2_1
	occ_~3_1 = occ_met3_1

Of course, the data is much wider (and taller), with
occ_metj_i	j = 1 to <=3
		i = 1 to <=8

I need to create summary measures for each i that takes the mean of the three j's. Two means are to be created: one that only evaluates values >1.5, and one that only evaluates values <=1.5:

  +-----------------------------------------------------+
  | id   occ_~1_1   occ_~2_1   occ_~3_1 mean1_1 mean2_1 |
  |-----------------------------------------------------|
  |  1          4          7          .    5.50       . |
  |  2        1.5          .          .       .    1.50 |
  |  3        2.3        3.3          .    2.80       . |
  |  4        3.3        2.3        3.5    3.03       . |
  |  5        1.5          .          .       .    1.50 |
  |-----------------------------------------------------|
  |  6        1.5          .          .       .    1.50 |
  |  7        2.3          .          .    2.30       . |
  |  8        1.5          .          .       .    1.50 |
  |  9        1.5        2.3        3.3    2.80    1.50 |
  | 10        1.5        2.3        3.3    2.80    1.50 |
  +-----------------------------------------------------+

The main issue is that the two commands I thought of using, egen and cond, do not allow replace and egen, respectively. This loop is clearly wrong, but it was an attempt at producing what I need:
foreach j of num 1/3	{
	foreach i of num 1/8	{
egen mean1_`i' = rowmean(occ_met1_`i' occ_met2_`i' occ_met3_`i') if (occ_met`j'_`i'>1.5) egen mean2_`i' = rowmean(occ_met1_`i' occ_met2_`i' occ_met3_`i') if (occ_met`j'_`i'<=1.5)
		}
	}

Any suggestions (short of reshaping)?
Thanks.

--
Thomas Speidel
*
*   For searches and help try:
*   http://www.stata.com/help.cgi?search
*   http://www.stata.com/support/statalist/faq
*   http://www.ats.ucla.edu/stat/stata/


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