## IF command

For questions regarding programming in the EViews programming language.

Moderators: EViews Gareth, EViews Jason, EViews Moderator, EViews Matt

soungl
Posts: 7
Joined: Fri Oct 23, 2009 3:13 am

### IF command

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?

startz
Non-normality and collinearity are NOT problems!
Posts: 3573
Joined: Wed Sep 17, 2008 2:25 pm

### Re: IF command

You want to use smpl if
smpl if x>0
series a=1
smpl @all

EViews Glenn
EViews Developer
Posts: 2642
Joined: Wed Oct 15, 2008 9:17 am

### Re: IF command

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.

Nau2306
Posts: 74
Joined: Thu Nov 17, 2011 11:51 am

### Re: IF command

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

Thanks

EViews Gareth
Fe ddaethom, fe welon, fe amcangyfrifon
Posts: 12540
Joined: Tue Sep 16, 2008 5:38 pm

### Re: IF command

What are you trying to do?

Nau2306
Posts: 74
Joined: Thu Nov 17, 2011 11:51 am

### Re: IF command

Well I am trying to count the number of times elements of x is greater than that of y.

startz
Non-normality and collinearity are NOT problems!
Posts: 3573
Joined: Wed Sep 17, 2008 2:25 pm

### Re: IF command

Nau2306 wrote: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)`

EViews Glenn
EViews Developer
Posts: 2642
Joined: Wed Oct 15, 2008 9:17 am

### Re: IF command

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.

anhkhoa_lpt
Posts: 22
Joined: Thu Sep 29, 2011 8:28 pm
Location: Vietnam

### Re: IF command

I don't know how to fix it. Anyone help me, thanks !

Code: Select all

`'create a workfilewfcreate q 1990 2010'create a y seriesseries y=nrnd'create 15 X seriesfor !i=1 to 15   series x{!i}=nrndnextgenr 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 15if x{!i}(-2) < x{!i}(-4) then series a{!i}=1endifnext`

EViews Gareth
Fe ddaethom, fe welon, fe amcangyfrifon
Posts: 12540
Joined: Tue Sep 16, 2008 5:38 pm

### Re: IF command

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

anhkhoa_lpt
Posts: 22
Joined: Thu Sep 29, 2011 8:28 pm
Location: Vietnam

### Re: IF command

EViews Gareth wrote:

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.

EViews Gareth
Fe ddaethom, fe welon, fe amcangyfrifon
Posts: 12540
Joined: Tue Sep 16, 2008 5:38 pm

### Re: IF command

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

anhkhoa_lpt
Posts: 22
Joined: Thu Sep 29, 2011 8:28 pm
Location: Vietnam

### Re: IF command

Okay, thank Mr. Gareth