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.

# st: How do i substitute the return local of program in the if expression of the egen command?

 From A Loumiotis To statalist@hsphsun2.harvard.edu Subject st: How do i substitute the return local of program in the if expression of the egen command? Date Tue, 30 Mar 2010 12:29:07 +0300

```Hi,

I have written a program (with the name andpve) that generates an
expression of the form:

var1>=0 & var2>=0 & ... & varN>=0

and returns this value as a local with name r(andpve).

I then want to use r(andpve) in another progam (rowctotal) where U
substitute it in the if expression of the egen command.

egen `left'_a = rowtotal(`right') if r(andpve), missing
egen `left'_b = rowmin(`right') if !(r(andpve))

But the egen command does not seem understand the r(andpve) as an if
expression or the !(r(andpve)) as an if expression.

What did I do wrong?  I'm new to Stata.  The code is below.

Best regards,

Antonis Loumiotis
Athens, Greece

------------------------------
---------
program rowctotal, rclass
version 11
gettoken left right: 0
capture drop `left'
andpve `right'
di r(andpve)
egen `left'_a = rowtotal(`right') if r(andpve), missing
egen `left'_b = rowmin(`right') if !(r(andpve))
egen `left' = rowtotal(`left'_*), missing
*drop `left'_*
end

program andpve, rclass
local k = 1
while "``k''" != "" {
local ++k
}
local --k
local i = 1
local andpve ""
while `i' <= `k'-1 {
local andpve "`andpve'``i''>=0 & "
local ++i
}
local andpve "`andpve'``i''>=0"
return local andpve `andpve'
end

-----------------------------------------------------------

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