第六讲 stata程序管理

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

preserve的用法 preserve 可以避免数据在程序执行后有所变动 sysuse auto,clear preserve // 备份当前状态S1 drop if price>10000 sum save nauto,replace restore //恢复到状态S1 sum use nauto,clear
暂元的管理 macro list macro dir macro drop x2 macro dir x2 macro dir aa
暂时性变量 tempvar sysuse auto ,clear tempvar x1 x2 gen `x1’=price*2 gen `x2’=ln(rep78) sum `x1’ `x2’ 暂时性变量可以与永久变量同名
do file的引用 do sj exit //保存为sj2.do
do sj2
assert 的用法 assert是stata的重要命令,如果assert后的表达式为true,则 stata继续执行命令,否则stata会提示出错
capture program drop sj2 sysuse auto,clear assert foreign>2 exit //保存为sj2.do
循环语句 while 语句 forvalues 语句 foreach 语句
条件循环语句:while local j=0 while `j’<5{ dis a[`j’] local j=`j’+1 }
循环语句:forvalues local i=1 local j=_N forvalues i=1(1)`j’{ dis a[`I’] } forvalues i=0(-1)-14{ dis a[`i’] }
循环语句:foreach foreach var of varlist x y z{ command } 示例1:将auto.dta各变量的对数转换和缩尾处理 sysuse auto,clear local vars price weight length foreach v of varlist `vars’{ gen ln`v’=ln(`v’) winsor `v’,gen(`v’w) p(0.01) }
第四种:do file的扩展 program hello dis “hello,world” end hello exit 如果加上program drop hello 解决方法: capture
第五种:ado file ado file是stata中的可执行文件 program hello dis “hello,world” end exit 执行时输入: program drop hello hello stata显示: hello,world
quietly的用法 quietly可以避免列印过多的结果 比较两段代码 capture program drop sj program sj sysuse auto,clear drop if price<1000 save nauto,replace end capture program drop sj program sj sysuse auto,clear quietly drop if price<1000 save nauto,replace end

第二种:在stata窗口中输入 program hello display hello,cufe end 查找语法错误: set trace on 关闭该功能: set trace off

第三种:do file中的program program hello display “hello,world” end stata中输入: do hello stata 显示: hello already defined r(110) stata 输入: program drop hello do hello //或用 run hello hello
wenku.baidu.com
一个完整的do file文件 capture log close //检查log的状态为close log using x,replace //打开log x set more off capture program drop hello program hello dis “hello,world” end log close // 关闭log exit //保存为sj.do
单值 Scalar 存放数值 scalar a=3 scalar b=ln(a)+5 dis a dis b 存放字符串 scalar c=.a dis c scalar s1=“hello,world” scalar s2=substr(s1,1,5) dis s1 dis s2
执行命令后的单值结果 sysuse auto,clear sum price return list dis r(N) scalar range=r(max)-r(min) dis range gen qq=r(sd) list qq in 1/10
条件语句:if 语法格式 格式1 if (条件){ command } 格式2 if(条件1){ command1 } else if(条件2){ command2 }
//这里可以没有if
条件语句:if示例 scalar aa=1 if aa==1{ dis “这小子真帅!” } else if aa==0{ dis “这女孩真亮!” }

第二种:在stata窗口中输入 stata显示: program hello 1. display ”hello,world“ 2. end 执行: hello 显示: hello,world 将hello,world修改为hello,cufe program hello hello already defined r(110) 解决方法:program drop hello 注意,program名不能与stata中的命令名一致 program des display ”hello,world“ end
ado file的保存地址 ado file只有放在指定的文件夹中才能运行 adopath命令 adopath + c:\ado\personal //增加新的adofile存放地址 adopath - c:\ado\personal //移除ado file目录 注意: 可以将自己的程序统一存放于 D:\stata\ado\personal\myado 同时在profile.do文件中做如下定义 adopath + D:\stata\ado\personal\myado 该文件夹下可以进一步设定a-z的子文件夹
引用stata命令的返回值
留存在内存中的结果 r-class ,与模型估计无关的命令,如sum e-class, 与模型估计有关的命令,如regress s-class,其他命令, 如list c-class,存储系统参数 显示留存值的方法 r-class : return list e-class: ereturn list s-class: sreturn list c-class: creturn list 留存值分为四种类型: 单值: 如 r(mean),r(max),r(N),e(r2),e(F) 矩阵:如e(b),e(V) 暂元:如e(cmd),e(depvar) 函变量:如 e(sample)
全局暂元global macro:定义与引用方式 全局暂元:在整个stata运行的过程中一直存在
定义与引用方式: global aa “This is my first program!” dis “$aa” global x1=5 global x2=2^$x1 dis $x2 示例: sysues auto,clear global option “,robust” global reg “regress” local x1 “price mpg foreign” $reg rep78 `x1’ $option local x2 “price mpg foreign trunk” $reg rep78 `x1’ $option $reg rep78 `x2’ $option
单值 管理 scalar scalar scalar scalar scalar scalar dir list //显示单值的内容 drop a // 删除单值 list drop all //删除所有单值 list
暂元变量local macro local:在一个do或ado file中发挥作用 暂元的定义与引用
第六讲 stata程序编写与管理
第一种方法:直接写do file 打开do编辑器: doedit 一个简单的do file display “hello,world” exit //告诉stata在这程序结束,exit可不写 保存为 hello.do 在command 窗口输入 do hello stata 会显示 display “hello,world” hello,world
存放数字 local a=5 dis `a’ local b=`a’+7 dis `b’ 存放文字 local name1 “sj:” dis “`name1’” local name2 “中央财经大学会计学院” dis “`name2’” local name3 `name1’`name2’ dis “`name3’” 存放变量名称 sysuse auto,clear local varllist price weight sum `varlist’
Local:数学运算符的处理 local a “2+2” dis `a’ dis “`a’” // 看这两个有何区别 local b=2+2 // 注意与a的定义的区别 dis `b’ dis “`b’”
暂元中的暂元 local a1=2 local a2 “var” local a3=2*`a1’ local a4 `a`a1’’ local `a2’`a1’=2*`a3’ dis `a1’ dis “`a2’” dis `a3’ dis “`a4’”
forvalues应用示例 假设你有100个文件,分别为d1.dta,d2.dta,…d100.dta 研究要求将这100个文件做纵向合并,写出程序
use d1.dta,clear local i=2 forvalues i=2(1)100{ append using d`i’.dta } save finaldata,replace
相关文档
最新文档