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: Simulating time series with if else condition
From
Nick Cox <[email protected]>
To
[email protected]
Subject
Re: st: Simulating time series with if else condition
Date
Tue, 21 Feb 2012 23:17:25 +0000
A separate issue is that
if fyear == 1971 {
}
else if fyear > 1971 ...
will always be interpreted as
if fyear[1] == 1971 {
}
else if fyear[1] >= 1971 ...
which is presumably not what is wanted. So the code not only can but
also should be rewritten. See also
FAQ . . . . . . . . . . . . . . . . . . . . . if command vs. if qualifier
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . J. Wernow
6/00 I have an if command in my program that only seems
to evaluate the first observation, what's going on?
http://www.stata.com/support/faqs/lang/ifqualifier.html
Nick
On Tue, Feb 21, 2012 at 11:09 PM, Christopher Baum <[email protected]> wrote:
> <>
> Untested, but I think you can replace
>
>
> if fyear==1971{
> by id: replace debtlevel_sim=actual_debtlevel
> /*start with actual debt-level in 1971*/
> }
> else if fyear>1971 & (L.debtlevel_sim+debtissue_sim)<=0 { /*in
> years following 1971: no negative debt-level*/
> by id: replace debtlevel_sim=0
> }
> else {
> by id: replace debtlevel_sim=L.debtlevel_sim+debtissue_sim
>
>
> with one line:
>
>
> by id: replace debtlevel_sim = cond( fyear==1971, actual_debtlevel, max(0, L.debtlevel_sim+debtissue_sim ))
>
*
* 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/