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]
Re: 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
Re: st: How do i substitute the return local of program in the if expression of the egen command?
Date
Tue, 30 Mar 2010 13:27:20 +0300
Thanks for your help!
using `r(andpve)' resolves the first problem...
but for !('r(andpve)') i get the following
invalid syntax
r(198);
any ideas?
Best,
Antonis
On Tue, Mar 30, 2010 at 12:57 PM, Maarten buis <[email protected]> wrote:
> --- 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/
>
*
* 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/