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]

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


From   Maarten buis <maartenbuis@yahoo.co.uk>
To   statalist@hsphsun2.harvard.edu
Subject   Re: st: How do i substitute the return local of program in the if expression of the egen command?
Date   Tue, 30 Mar 2010 09:57:16 +0000 (GMT)

--- On Tue, 30/3/10, A Loumiotis wrote:
> 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))

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

Hope this helps,
Maarten

--------------------------
Maarten L. Buis
Institut fuer Soziologie
Universitaet Tuebingen
Wilhelmstrasse 36
72074 Tuebingen
Germany

http://www.maartenbuis.nl
--------------------------



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


      

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