# Re: st: Using gen / egen in one step (not two)

 From n j cox <[email protected]> To [email protected] Subject Re: st: Using gen / egen in one step (not two) Date Sun, 07 Jan 2007 17:42:19 +0000

There is no need for guessing on this. If you
look directly at the help you can see that the
syntax of -egen- is

egen [type] newvar = fcn(arguments) [if] [in] [, options]

and so there is no scope for anything on the right-hand
side other than -if- or -in- stuff or options.

There is really is a world of difference between functions
(strict sense) and -egen- functions: in several ways use
of the same term is unfortunate, although a different
term would also not have been desirable.

In many contexts functions can be combined pretty well
arbitrarily with all kinds of other stuff in complicated
expressions, but with -egen- functions there is no
hidden flexibility -- except, as Scott Merrymsn indicated,
the flexibility you provide yourself as programmer
through options. Otherwise what you want requires two
lines.

Nick
[email protected]

Sergio Correia

I don't think you can't do it in one line. Even if you could, I think
that it would be a bad idea for more advanced uses of -egen-. Imagine
trying to understand (or even program!) something like:

egen x = 2+5*log(seq(), from(1) to(10) by(region))

On the other hand, with -generate- you can mix all the functions you
want, like in:
generate x = 3 * (price + mpg) / 2

Which is similar to what you did, except for the treatment of missing values.

Jeremy Miles

Am I missing something obvious here, when I try to combine two steps
into one line:
. sysuse auto
. egen x = rowmean(price mpg) * 3

Stata says:
varlist not allowed
r(101);

For:
. egen x = 3 * rowmean(price mpg)

Stata says:
r(198);
(Invalid syntax)

I can do it in two steps, but that seems inelegant. Have I missed
something obvious?

*
* 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/