stata变量引用

您所在的位置:网站首页 stata如何将第一行作为变量的标签 stata变量引用

stata变量引用

2024-07-13 13:54| 来源: 网络整理| 查看: 265

stata变量引用–潘登同学的stata笔记

文章目录 stata变量引用--潘登同学的stata笔记 变量生成gen命令通配符:*, ?, -因子变量时间序列 变量命名、前缀与标签变量命名、添加前缀通配符与批量重命名变量标签数字-文字对应表CSMAR数据处理 查看、查找变量单值、暂元单值暂元利用暂元写循环语句

变量生成 gen命令 sysuse nlsw88, clear gen lnwage = ln(wage) gen yes_white = (race==1) // [=exp] tabstat lnwage hours married age, by(yes_white) s(mean) f(%3.2f)

在这里插入图片描述

通配符:*, ?, - sysuse nlsw88, clear sum age race married never_married grade sum age-grade // 顺序出现的变量,列出头尾两个变量即可 sum s* // "*" 是孙悟空,可以表示`任何'长度的字母或数字 sum *arr* // 可以用在任何位置 sum ?a?e // "?" 是猪八戒,只能替代`一个'长度的字母或数字

在这里插入图片描述

因子变量 i: 表示将变量转换为虚拟变量c: 表示变量为连续型变量(只有加上c或i才能参与后续交乘项平方项的运算)#: 相当于乘号##: 能同时具有更低阶的交乘项 sysuse nlsw88, clear tab race // 类别变量 reg wage tenure hours i.race i.industry // 种族和行业虚拟变量 reg wage tenure hours age c.age#c.age // 平方项 # reg wage tenure hours c.age##c.age // 等价命令,简写 ## reg wage tenure hours i.marr i.marr#c.hours // 交乘项 reg wage tenure c.age##c.age##c.hours // 能同时有5项

在这里插入图片描述

时间序列 sysuse sp500, clear tsset date // 对日期排序 gen t = _n tsset t gen lnP = ln(close) gen return = D.lnP //收益率(D.表示一阶差分) gen Lreturn = L.return //前一天的收益率(L.表示一阶滞后项) gen L2return = L2.return //前两天的收益率 reg return L.return L2.return reg return L(1/3).return F(1/2).return // F表示滞后项的反义词 //回归时不必产生这些变量

在这里插入图片描述

在这里插入图片描述

变量命名、前缀与标签 变量命名、添加前缀 sysuse auto, clear rename make mk rename (price rep78) (Price REP78) //批量重命名 rename mpg foreign trunk, upper //大写 sysuse auto, clear // D2_gen.do renvars price mpg wei, prefix(d1_) //批量添加前缀或后缀 des

在这里插入图片描述

通配符与批量重命名 // 把前缀为 jan 的变量全部重命名为后缀为 1 的变量名,如 janstat → stat1 rename jan* *1 // 去掉 jan 前缀 rename jan* * // * 去掉 jan 后缀 rename *jan * // 将前缀为 jan 的四位字符重命名为后缀为 1 的两位字符,如 jans → s1,janstat 不会发生变化 rename jan? ?1 // 删除 jan,如 janstat 重命名为 stat,injanstat → instat,subjan → sub rename *jan* ** // 命名为 jan 前的字符,如 injanstat → in,statjan → stat(与下一个进行区分) rename *jan* * // 命名为 jan 后的字符,如 injanstat → stat rename *jan* .* // 为后缀为 pop 的变量名增加前缀 jan,如 age1pop → janage1pop rename *pop jan= // 所有变量增加前缀 pre rename whatever pre= // * 所有变量增加后缀 jan rename whatever =jan // 所有变量增加前缀 pre 且增加后缀 fix rename whatever pre=fix // 将由字母 v+ 数字的变量名重命名为 stat+ 数字,如 v1→stat1 v10→stat10 rename v# stat# // 增加括号后表示重命名 v 后面跟 1 位数字的变量,v10 不会被重命名 rename v(#) stat(#) // stat10 → stat_2010,stat2 不会发生改变 rename stat(##) stat_20(##) // * stat1 → stat_2001,stat10 不会发生改变 rename stat(#) stat_200(#) // 重命名为倒序变量名,如 v8 → v1,v7 → v2,v6 → v3 rename v# v#, renumber sort // * 数字起始值 10,如 v1 → v10,v2 → v11 rename v# v#, renumber(10) // a → v1,b → v2,c → v3 rename (a b c) v#, addnumber // a12 → a21,a32 → a23 rename a(#)(#) a(#)[2](#)[1]

rename命令选项:

addnumber:在末尾添加顺序编号;addnumber(#):在末尾添加指定起始值的顺序编号;renumber:按顺序重新编号;renumber(#):指定起始值开始顺序编号;sort:编号前进行排序;dryrun:报告但不进行重命名;r:将变量名储存在 r() 中,编程时调用;upper:将字母转换为大写;lower:将字母转换为小写;proper:将字母转换为首字母大写。 变量标签 sysuse auto, clear des label var price "汽车价格($)" label var rep78 "维修次数" des //查看效果

在这里插入图片描述

数字-文字对应表 sysuse auto, clear *-Step1: label define, 定义标签内容 label define rep78_label 1 "很好" 2 "较好" 3 "中等" 4 "较差" 5 "很差" *-Step2: label value, 将变量与标签内容关联起来 label value rep78 rep78_label label list rep78_label //查看对应关系 des2 rep78 //建议采用这种方式, 简洁 br rep78 tab rep78 foreign

在这里插入图片描述

在这里插入图片描述

CSMAR数据处理

从CSMAR数据库中下载的企业财报数据,会把第一行作为独特代码,第二行作为变量标注(label),第三行写单位。在导入Stata中时,第一行可以自动转化为变量名,但第二行标注会在导入时成为第一个标量。

下面这段代码可以至直接将第三行删除,第二行转为变量label。

drop if _n == 2 foreach var of varlist * { // 对每一个变量 label variable `var' "`=`var'[1]'" // 把变量标注为第一行的内容 replace `var' = "" if _n == 1 // 把第一行改为空 destring `var' , replace // 把变量destring } drop in 1 // 删除第一行 查看、查找变量 sysuse nlsw88, clear des //几乎每一笔数据进来都要先执行该命令 des2 //完全替代了 des 命令

在这里插入图片描述

查找变量:lookfor

use "$path\_Data\d_lookfor", clear lookfor "现金流" lookfor "报酬"

在这里插入图片描述

单值、暂元 单值

定义单值: 存放数字

scalar a = 3 scalar b = ln(a) + 3^a dis a dis b

定义单值: 存放字符串

scalar c = .a dis c scalar s1 = "hello, Arlion" scalar s2 = substr(s1,1,5) // 单值的引用很简单 dis s1 dis s2

执行命令后的单值结果:

sysuse auto,clear sum price return list // sum之后return list能将sum的结果保存到r中 dis r(N) dis r(sd)

在这里插入图片描述

reg price weight length mpg // see R9_esttab.do ereturn list est store r1 reg price weight length mpg foreign est store r2 esttab r1 r2, nogap scalar(r2 r2_a F N)

在这里插入图片描述

一些特殊的单值:

help _variables // 系统变量 sysuse nlsw88, clear dis _N //样本数 creturn list // 系统参数设置 dis c(current_time) 暂元

局域暂元 (local) :只能存在于一次运行之中

local a = 5 display `a' // 注意应用方法 左边是` 右边是' local b = `a' + 7 dis `b'

在stata中,他能通过字符串来引用变量(面向对象的编程语言是不行的(如py))

scalar x_1 = 7 local y = "x" dis `y'_1

在这里插入图片描述

用于存放变量名称

sysuse auto, clear local xx "price weight mpg foreign" // *local xx "price weight mpg foreign i.rep78" sum `xx' reg `xx'

在这里插入图片描述

sysuse nlsw88, clear reg wage hours i.race local b0 = _b[_cons] //常数项估计值 local b1 = _b[hours] //系数估计值 local b2 = _b[2.race] //虚拟变量的估计值 local b3 = _b[3.race] local se_b1 = _se[hours] //标准误 dis "wage = `b0' + `b1'*hours + `b2'*2.race + `b3'*3.race" gen wage_fit = `b0' + `b1'*hours + `b2'*2.race + `b3'*3.race br wage* dis "SE(b1) = " `se_b1'

暂元中的暂元:

local a1 = 2 local a2 "var" local a3 = 2*`a1' local a4 `a`a1'' dis `a1' dis "`a2'" // 因为a2是var所以需要用双引号扩住) dis `a3' dis "`a4'"

在这里插入图片描述

全局暂元:能长期存在内存中

sysuse nlsw88, clear global xx "hours ttl_exp married union" reg wage $xx // 全局暂元的引用方式 est store homo reg wage $xx, robust est store het reg wage $xx i.occupation, robust est store het_occu 利用暂元写循环语句

while循环:

local j = 0 while `j'


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3