EViews命令和编程之怎样使用表格文档格式.docx
《EViews命令和编程之怎样使用表格文档格式.docx》由会员分享,可在线阅读,更多相关《EViews命令和编程之怎样使用表格文档格式.docx(6页珍藏版)》请在冰豆网上搜索。
根据缺省设置,每个表格单元的长度可显示10个字符。
如果字符串的长度超过单元的显示宽度,那么该字符串的一部分将是不可见的。
采用setcolwidth命令可改变表格的列宽。
Setcolwidth关键字之后的括号中,填入表格名称、要调整宽度的列号和列中近似的字符个数。
Eviews依据一个数字字符的宽度来度量表格单元的大小。
不同的字符占据不同的宽度,所以实际显示的字符数与设置的字符数可能存在少许的差异。
setcolwidth(bestres,2,12)
设置BESTRES表格第二列的宽度,使第二列的宽度大约有12个字符长。
采用setline命令在表格中放置水平线。
Setline关键字后的括号中填入表格名和行号。
例如
setline(bestres,8)
在BESTRES表格的第8行中放置一条分隔线。
三、填充表格中的单元(FillingCellsofaTable)
采用赋值语句给表格单元赋值。
每个表格单元都可以赋给字符串数值或者赋给一个数值值。
字符串(Strings)
给表格单元设置字符串数值赋值语句的格式:
表格名(行号,列号)=字符串表达式
表达式的计算结果是一个字符串的表达式称为字符串表达式。
bestres(1,6)="
convergencecriterion"
%strvar="
lmtest"
bestres(2,6)=%strvar
bestres(2,6)=bestres(2,6)+"
with5df"
数值(Numbers)
数值可以直接键入表格单元,或者在将数值置入表格单元前先将它们转换成字符串后,作为字符串置入表格单元。
如果直接将数值键入单元,数值将按那个单元设置的数值格式进行显示;
如果单元的格式发生变化,那么数值将按照新格式重新显示。
如果数值置入表格之前被转换成了字符串,那么数值将被冻结成那个格式,也不能再对它进行格式化。
根据Eviews的缺省设置,数值将以填满单元格的数字位数进行显示,如有必要则采用科学计数法的方式显示。
对应地,如果采用函数,先将数值转换成字符串,那么字符串将保持必要的小数位的方式显示数值。
下面是一些涉及数值赋值的例子:
tab1(3,4)=15
tab1(4,2)="
R-squared="
+@str(eq1.@r2)
!
ev=10
tab1(5,1)="
Thereare"
+@str(!
ev)+"
events"
单元格式化(CellFormatting)
单元设置命令setcell与单元赋值语句类似也可以为表格单元设置内容,同时单元设置命令setcell还允许用户为表格单元设置格式选项。
单元设置命令setcell是通过命令行和通过编程调整单元格式的唯一方法。
单元设置命令setcell可以接受下列形式参数:
∙表格名称
∙表格单元的行号和列号
∙放置入表格单元的数值或字符串
∙选项:
对齐代码、数值格式代码或者两种代码都有
对齐代码包括:
∙"
c"
居中(缺省设置)
r"
右对齐
l"
左对齐
点击工具条上的number按钮打开数据格式对话框(NumberFormat)。
数值格式代码决定了表格单元中数值的显示格式;
数值格式代码对包含字符串的表格单元无效。
数值格式代码分为两类:
正整数代码指定小数点以后的位数,相应于数值(number)格式对话框中的固定小数位数栏(fixeddecimal);
负整数代码指定显示数值的总位数,相应于数值格式对话框中的固定字符数栏(fixedcharacter)。
注意,使用负数格式代码时最前面的一位总是被保留,用以显示该数据的符号,如果数据存在小数点,小数点也作为一个字符计算在显示位数中。
因此,扣除这两项余下的长度才是显示数据的位数。
如果数据太大或者太小以至于没有足够的空间显示它们,那么Eviews将采用科学计数法来显示这类数据。
如果表格单元没有足够的(6位字符或更小)空间显示科学计数法表示的数据,那么这个单元格将显示一个星号,指示该单元格显示出错。
下面是使用设置单元格命令setcell的例子:
setcell(tabres,9,11,%label)
将数值常数变量%label的值置入表格TABRES中位于9行,11列的单元格内。
setcell(big_tabl,1,1,%info,"
)
将数值常数变量%info的值插入表格big_tabl中位于1行,1列的单元格内并居中显示。
setcell(tab1,5,5,!
data)
将数值常数变量!
data的值置入表格TAB1中位于5行,5列的单元格内,采用缺省设置的数值格式显示。
setcell(tab1,5,6,!
data,4)
data的值置入表格TAB1中位于5行,6列的单元格内,显示时小数点后保留4位小数。
setcell(tab1,3,11,!
data,"
3)
data的值置入表格TAB1中位于3行,11列的单元格内,采用右对齐格式显示数据,小数点后保留3位小数。
setcell(tab1,4,2,!
data,-7)
data的值置入表格TAB1中位于4行,2列的单元格内,一共显示7位字符。
四、表格举例(TableExample)
这里对上述例题作进一步地扩展,介绍如何通过程序构造一个表格。
这个程序为组内每一个序列构造一个表格,用来显示各个序列单位根检验的结果。
首先编制一个子程序,以形式参数向量的形式为组内每个序列返回Dickey-Fullert-统计量(关于子程序的构造方法参见:
Subroutines):
subroutinelocalmuroot(groupg1,vectorv1)
'
getnumberofseriesingroup
n=g1.@count
declarevectortosaveresults
vector(!
n)tstat
doADFtestforeachseriesingroup
for!
i=1to!
n
%str=g1.@seriesname(!
i)
seriestemp={%str}
equationeq_temp.lsd(temp)temp(-1)c
tstat(!
i)=eq_temp.@tstat
(1)
next
copyresultstoglobalvector
v1=tstat
endsub
注意,我们没有将每一次所得结果,直接传递给要返回数值的形式参数向量vectorv1中的元素。
如果那样作个话,那么在调用函数值前必须知道组对象中的序列个数,因此要正确地给出向量vectorv1的大小。
对应地,我们将结果存储在一个临时的暂存向量中,而在程序结束时的向量赋置于居中暂存向量复制到作为返回的形式参数变量中。
这个形式参数向量的大小是根据需要自动调整的。
下面这个程序是构造显示单位根检验结果表格的程序:
includec:
\evdata\programs\muroot
loadc:
\evdata\macro
groupgrp1fftb3tb10
vectortstat
callmuroot(grp1,tstat)
getnumberofseriesingroup
scalarn=grp1.@count
declaretableandfillinheaders
table(6,n+1)adf
setcell(adf,1,1,"
ADFtest(nolaggedfirstdifferenceswithaconstant)"
setline(adf,2)
setcell(adf,3,1,"
series"
setcell(adf,4,1,"
t-stat"
setline(adf,5)
setcell(adf,6,1,"
5%criticalvalueis-2.86(Davidson&
MacKinnon,Table20.1)"
fillincells
i=1ton
setcell(adf,3,!
i+1,grp1.@seriesname(!
i))
setcell(adf,4,!
i+1,tstat(!
i),3)
showadf
在程序第一段中,加载工作文件,建立一个包含3格序列的组对象,调用上面给出的子程序执行单位根检验。
在程序的第二段中申明表格对象,在表格中填充表格的标题信息。
在程序的第三个段中通过组内元素的循环,取得序列名和t-统计量向量,并把它们置入表格的适当位置。
注意,设置t-统计量仅仅显示3位小数。
Theresultingtableisdepictedbelow:
下表展示的就是我们运行程序得到的表格: