接下来我们使用
file write
命令结合这些控制字符来构造一个固定宽度的文件,首先生成6个变量名:
clear
cap mkdir E:\file\
cd E:\file\
tempname handle
//生成一个临时句柄`handle’
file open `handle' using file.txt, text write replace
//调用句柄`handle’,向file.txt中写入文本
file write `handle' _page _n
//插入一个换页符并换行
file write `handle' _column(1) _skip(5) "var1
"
//定位于第1列,接着插入5个空格并输入文本“var1”
file write `handle' _column(10) _skip(5) "var2"
//定位于第10列,接着插入5个空格并输入文本“var2”
file write `handle' _n
//换行
file write `handle' _column(15) _tab(1) _skip(5) "var3"
//定位于第15列,接着插入1个水平制表符和5个空格并输入文本“var3”
file write `handle' _column(20) _tab(2) _skip(5) "var4"
//定位于第20列,接着插入2个水平制表符和5个空格并输入文本“var4”
file write `handle' _column(30) _tab(3) _skip(5) "var5"
//定位于第30列,接着插入3个水平制表符和5个空格并输入文本“var5”
file write `handle' _skip(5) "var6" _n
//插入5个空格,输入文本“var6”并换行
file close `handle'
//关闭file
shellout file.txt
生成的TXT文件如下图所示:
接着我们写一个循环,为var1-var6每个变量生成100个观测值,这些观测值均为服从(0,1)均匀分布的随机数:
tempname handle
file open `handle' using file.txt, text write append
forvalues i = 1(2)100 {
file write `handle' _column(1) %9.3f (`=runiform()')
//指定生成的数据字节长度为9并保留小数点后3位有效数字
file write `handle' _column(10) %9.3f (`=runiform()')
file write `handle' _n
file write `handle' _column(15) _tab(1) %9.4f (`=runiform()')
file write `handle' _column(20) _tab(2) %9.5f (`=runiform()')
file write `handle' _column(30) _char(9) _char(9) _char(9) _dup(2) %9.6f (`=runiform()') _n
//使用3个_char(9)来插入3个水平制表符,相当于_tab(3);使用_dup(2)将生成的随机数写入2次
}
file close `handle'
shellout file.txt