Page 1 of 1
If - Else code
Posted: Sun Jun 05, 2011 3:25 pm
by pyth
Eviews 7
Im trying to make a simple if-else program for a manupulation with the data. I want to substract a given number of years from a variable containing the age of a person. The outcome should be the potential experience on the job.
The formula is basically Expirience = Age - given number based on the skill stored in the series pe0400 (coded 1 to 6)
Here is what I have come up with:
Code: Select all
'if pe0400 = 2 then
' exper=exper - 11
' else
' if pe0400_copy = 3 then
' exper=exper - 12
' else
' if pe0400_copy = 4 then
' exper=exper-13
' else
' if pe0400_copy = 5 then
' exper=exper-19
'' else
' if pe0400_copy = 6 then
' exper=exper-21
' else
' endif
' endif
' endif
' endif
' endif
This approach doesnt work. Could somebody point out the mistake here, or suggest a better approach? Thanks a lot.
Re: If - Else code
Posted: Sun Jun 05, 2011 3:46 pm
by startz
exper = @recode(pe0400 = 2,exper-11,exper)
exper = @recode(pe0400 = 3,exper-12,exper)
'etc
Re: If - Else code
Posted: Tue Jan 09, 2024 12:53 am
by serkan
Dear all,
I have a problem with the code.
I want to change the !bestlag according to !i. But when I run the program, it gives zero for the bestlag.
Is there anyone who can help me?
Code: Select all
!maxlag = 12 'Number of NA (MAX. LAG) in the series
!windowlenght = 48 'window lenght
!noe = @obs(y1)-!maxlag-!windowlenght
!bestlag = 1
for !i=1 to 21 'Dependent variables
for !k = 1 to !noe 'The number of estimation to be made.
!bestlag = @recode(!i=1, !bestlag=12, !bestlag)
!bestlag = @recode(!i=2, !bestlag=6, !bestlag)
!bestlag = @recode(!i=3, !bestlag=2, !bestlag)
!bestlag = @recode(!i=4, !bestlag=1, !bestlag)
!bestlag = @recode(!i=5, !bestlag=2, !bestlag)
!bestlag = @recode(!i=6, !bestlag=2, !bestlag)
!bestlag = @recode(!i=7, !bestlag=1, !bestlag)
!bestlag = @recode(!i=8, !bestlag=4, !bestlag)
!bestlag = @recode(!i=9, !bestlag=1, !bestlag)
!bestlag = @recode(!i=10, !bestlag=1, !bestlag)
!bestlag = @recode(!i=11, !bestlag=2, !bestlag)
!bestlag = @recode(!i=12, !bestlag=2, !bestlag)
!bestlag = @recode(!i=13, !bestlag=11, !bestlag)
!bestlag = @recode(!i=14, !bestlag=1, !bestlag)
!bestlag = @recode(!i=15, !bestlag=4, !bestlag)
!bestlag = @recode(!i=16, !bestlag=1, !bestlag)
!bestlag = @recode(!i=17, !bestlag=11, !bestlag)
!bestlag = @recode(!i=18, !bestlag=6, !bestlag)
!bestlag = @recode(!i=19, !bestlag=1, !bestlag)
!bestlag = @recode(!i=20, !bestlag=12, !bestlag)
!bestlag = @recode(!i=21, !bestlag=3, !bestlag)
smpl @first+!maxlag+!k @first+!maxlag+!windowlenght+!k 'widening window
equation qreg_!i_!k.qreg y!i c y!i(-1) dy!i(-1 to -!bestlag)
freeze(f_qreg_!i_!k) qreg_!i_!k.qrprocess @coefs c(2)
matrix(!noe, 2) coefs_tvp_!i_01
coefs_tvp_!i_01(!k,1) = f_qreg_!i_!k(10,3) 'value
coefs_tvp_!i_01(!k,2) = f_qreg_!i_!k(10,4) 'std dev.
matrix(!noe, 2) coefs_tvp_!i_02
coefs_tvp_!i_02(!k,1) = f_qreg_!i_!k(11,3) 'value
coefs_tvp_!i_02(!k,2) = f_qreg_!i_!k(11,4) 'std dev.
matrix(!noe, 2) coefs_tvp_!i_05
coefs_tvp_!i_05(!k,1) = f_qreg_!i_!k(14,3) 'value
coefs_tvp_!i_05(!k,2) = f_qreg_!i_!k(14,4) 'std dev.
matrix(!noe, 2) coefs_tvp_!i_08
coefs_tvp_!i_08(!k,1) = f_qreg_!i_!k(17,3) 'value
coefs_tvp_!i_08(!k,2) = f_qreg_!i_!k(17,4) 'std dev.
matrix(!noe, 2) coefs_tvp_!i_09
coefs_tvp_!i_09(!k,1) = f_qreg_!i_!k(18,3) 'value
coefs_tvp_!i_09(!k,2) = f_qreg_!i_!k(18,4) 'std dev.
delete f_qreg_!i_!k
next
next
Re: If - Else code
Posted: Tue Jan 09, 2024 7:06 am
by startz
I think you don't want equal signs inside @recode.
Re: If - Else code
Posted: Tue Jan 09, 2024 10:59 am
by EViews Matt
Hello,
You may also find it more readable/maintainable to use a vector to store the mapping between the value of !i and that of !bestlag rather than a sequence of @recode statements. For example,
Code: Select all
vector(21) bestlagmap
bestlagmap.fill 12, 6, 2, 1, 2, 2, 1, 4, 1, 1, 2, 2, 11, 1, 4, 1, 11, 6, 1, 12, 3
!bestlag = bestlagmap(!i)
Re: If - Else code
Posted: Wed Jan 10, 2024 3:19 am
by serkan
Great.
Many thanks.
Hello,
You may also find it more readable/maintainable to use a vector to store the mapping between the value of !i and that of !bestlag rather than a sequence of @recode statements. For example,
Code: Select all
vector(21) bestlagmap
bestlagmap.fill 12, 6, 2, 1, 2, 2, 1, 4, 1, 1, 2, 2, 11, 1, 4, 1, 11, 6, 1, 12, 3
!bestlag = bestlagmap(!i)