Page 1 of 1
IF command
Posted: Wed Feb 23, 2011 7:39 am
by soungl
Hi, I have a question about IF command. I’m using EViews 6. I tried the following program with no success.
series a
if x>0 then
series a=1
endif
x is a numerical series as follows:
3
4
-3
10
The program keeps producing a with
NA
NA
NA
NA
when it should produce
1
1
NA
1
What am I doing wrong?
Thank you so much for your advice.
Re: IF command
Posted: Wed Feb 23, 2011 7:44 am
by startz
You want to use smpl if
smpl if x>0
series a=1
smpl @all
Re: IF command
Posted: Wed Feb 23, 2011 10:13 am
by EViews Glenn
Or even easier...
Note that the IF test in the original post was testing whether all of the elements of the series were >0, hence the observed result.
Re: IF command
Posted: Wed Jul 11, 2012 1:55 am
by Nau2306
hi
I am using eviews 6 and I am trying a similar thing as described above but in my case, I have two series namely x and y and the condition is that x > y. how can I access each element of x and y? for example if x is a series as follows:
4
6
-1
7
and y is
2
0
6
3
then the condition should be 4>2, 6>0, -1>6 and so on?
this is what I have tried but it says syntax error:
scalar a = 0
for !j=1 to !length-!ssize
a = @recode((x(!j) < y(!j)), a+1, a)
next
a
Please help...
Thanks
Re: IF command
Posted: Wed Jul 11, 2012 7:44 am
by EViews Gareth
What are you trying to do?
Re: IF command
Posted: Wed Jul 11, 2012 10:39 am
by Nau2306
Well I am trying to count the number of times elements of x is greater than that of y.
Re: IF command
Posted: Wed Jul 11, 2012 10:45 am
by startz
Well I am trying to count the number of times elements of x is greater than that of y.
Something like
Re: IF command
Posted: Wed Jul 11, 2012 1:37 pm
by EViews Glenn
To provide some context. The expression "x>y" evaluates to the series of 0, 1 values for whether X is indeed greater than Y. The @sum simply sums over the values of this auto-series. Note that the result needn't be put into a new series; it can go into a scalar if desired.
Re: IF command
Posted: Mon Aug 04, 2014 3:29 am
by anhkhoa_lpt
I don't know how to fix it. Anyone help me, thanks !
Code: Select all
'create a workfile
wfcreate q 1990 2010
'create a y series
series y=nrnd
'create 15 X series
for !i=1 to 15
series x{!i}=nrnd
next
genr t=@trend()
smpl if t<40
'if xi (-2) < xi (-4) then creating a series named a1=1 (2 and 4 are the lags of xi.)
for !i=1 to 15
if x{!i}(-2) < x{!i}(-4) then series a{!i}=1
endif
next
Re: IF command
Posted: Mon Aug 04, 2014 4:26 am
by EViews Gareth
Code: Select all
if x{!i}(-2) < x{!i}(-4) then series a{!i}=1
This line doesn't make sense. Not sure what you're trying to do
Re: IF command
Posted: Mon Aug 04, 2014 4:48 am
by anhkhoa_lpt
Code: Select all
if x{!i}(-2) < x{!i}(-4) then series a{!i}=1
This line doesn't make sense. Not sure what you're trying to do
I want to filter series which have value at lag 2 < value at lag 4. If a series 's suitable with this rule, creating a new series (name a) and set the value = 1.
Re: IF command
Posted: Mon Aug 04, 2014 5:13 am
by EViews Gareth
See the rest of the comments in this thread. You can't use an of statement to do that, you need to use a smpl
Re: IF command
Posted: Mon Aug 04, 2014 5:26 am
by anhkhoa_lpt
Okay, thank Mr. Gareth :)