Extract number of rows in a table

For questions regarding programming in the EViews programming language.

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

rdwest
Posts: 18
Joined: Wed Dec 23, 2009 11:35 am

Extract number of rows in a table

Postby rdwest » Wed Dec 23, 2009 12:15 pm

Hi,
Simple question: I'm using Eviews 6, and I can't seem to find a data member that reports the number of rows in a table. Is there something similar to the command .@rows for matrices that can be used for tables?

Thanks.

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

Re: Extract number of rows in a table

Postby EViews Gareth » Wed Dec 23, 2009 2:48 pm

Tables don't really have a number of rows (or columns), thus there is no data member, or, in fact, any way to find out the number of rows.

Yes, this is frustrating.

rdwest
Posts: 18
Joined: Wed Dec 23, 2009 11:35 am

Re: Extract number of rows in a table

Postby rdwest » Tue Jan 05, 2010 9:01 am

Hm. Thank you.

I was aiming to produce a unique list of regressors among a set of about 100 regressions. There are 40 or so unique explanatory variables, and each equation uses between 5 and 8 of them. I've examined your code from the post "An introduction to EViews programming":

......



string allregs = ""
for !i = 1 to @wcount(%eqnames)
%eqname = @word(%eqnames,!i) 'get ith equation name
%vars = {%eqname}.@wregressors
%vars = @wmid(%vars,2) 'drop dependent variable
allregs = allregs + " " + %vars
next

'remove duplicates from regressor list
allregs = @wunique(allregs)




.....but since I'm using Eviews 6, I don't think I have the @wregressors or @wunique commands at my disposal.

I've tried approaching the issue another way: freezing the output of each individual regression, and extracting the coefficients. This works, but I want a


table results_regressor
scalar m = 100

for !i=1 to m

freeze(table_ld{!i}) ld{!i}.stats 'freeze output to extract regressor names
for !j= 9 to 9+ld{!i}.@ncoefs
results_regressors({!j}-7,{!i}+1)= table_ld{!i}({!j},1) 'table for regressor names
results_regressors(!j-7,1) = "beta" + @str(!j-8) 'label coefficients
results_regressors(1,1) = "Equation Number"
setcell(results_regressors, 1, {!i}+1,{!i}, 0)

next
next


This works, but I want a unique list in a single column (rather than 100 columns of varying length).

I tried modifying by adding (within the second loop):

for !k = 1 to n
if table_ld{!i}(!j,1) <> results_all(!k,1) then
results_all(n+1,1) = table_ld{!i}(!j,1)
n = n+1
endif
next


However, the table results_all (created at the beginning of the program) comes back blank.

Any insight or better ideas on how to create this list?

Many thanks,
R.

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

Re: Extract number of rows in a table

Postby EViews Gareth » Tue Jan 05, 2010 9:59 am

Can't think of any easy way to do it in EV6 (well other than upgrading to 7!)

rdwest
Posts: 18
Joined: Wed Dec 23, 2009 11:35 am

Re: Extract number of rows in a table

Postby rdwest » Tue Jan 05, 2010 10:37 am

I give up; my colleagues and I have gotten that reply for most of our questions:

I might as well go ahead and ask whether there's an easy and inexpensive way to upgrade from 6 to 7, since apparently the difference in functionality is vast. (That's disappointing; we just purchased Eviews a little over two months ago.)


Thanks.

Rachel

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

Re: Extract number of rows in a table

Postby EViews Gareth » Tue Jan 05, 2010 10:45 am

Contact our office (sales@eviews.com) for pricing.


Return to “Programming”

Who is online

Users browsing this forum: No registered users and 2 guests