Bookmark and Share

Notice: On April 23, 2014, Statalist moved from an email list to a forum, based at statalist.org.


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

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


From   A Loumiotis <[email protected]>
To   [email protected]
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/


© Copyright 1996–2018 StataCorp LLC   |   Terms of use   |   Privacy   |   Contact us   |   Site index