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

Code: Select all

series a = @recode(x>0, 1, na)
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

Code: Select all

series s = @sum(x>y)

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 :)