小结
本次主要是对导入数据的处理
比如有时需要对变量取对数,gen lnvar = ln(var),以及求平均数等egen;
字符型数据和数值型数据的转换,可以生成新的encode和decode出马,也可以在原来的变量上直接变换,destring和tostring,replace force,强制执行;
改变变量名字rename;
等等等等,具体详见内容
1、gen命令
gen命令可以创建新的变量,可简写为gsysuse auto, clear *- 生成对数形式 gen lnprice = ln(price) *- 生成对数形式,放在price后,after gen lnprice1 = ln(price) , a(price) *- 生成对数形式,放在price前,before gen lnprice2 = ln(price) , b(price)
2、replace命令replace命令可以替换现有变量的值
*- 将mpg缩小10倍 replace mpg = mpg/10 *- replace和gen命令组合使用 *- 设置虚拟变量的一种方式 gen d = 0 if rep78 <= 3 replace d =1 if rep78 > 3
3、egen 命令
gen命令支持的函数不多egen的生成有很多,比如最大值、最小值、平均值
具体用法可在stata命令窗口输入h egen
注,有什么不会的,都可以help一下下,如果没有,那就findit
4、by/bys和egen组合命令
如果想进行分组统计,则需要egen配合by/bys命令一起使用!bys等于by命令加上sort选项,所以如果需要排序,直接用bys最方便
*- 用by——按照rep78对price变量数据分组求最小值 sort rep78 by rep78 : egen meanprice_rep78_by = mean(price) *- 用bys——按照rep78对price变量数据分组求最小值 bys rep78 : egen meanprice_rep78_bys = mean(price)
5、encode/decode 命令
encode字符串类型变量来生产对应的数值型变量
decode可以根据标签化的数值型变量生产对应的字符串变量
*- encode,生成数值型变量 encode make, gen(m) *- decode,生成字符型变量 decode m, gen(strm)
6、xtset 命令
如果想将数据转换为面板数据类型,需要使用xtset命令*- 设置面板数据,在这里假设公司年份数据 *- 每个公司id,以及各个年份year *- 若下载下来的公司代码id为字符型,需先encode一下 encode stkcd, gen(id) xtset id year *- 若要清除面板数据格式 xtset, clear
7、destring/tostring 命令
tostring和destring可以将数字转化为字符型变量或数值型变量。将year变量转化为字符串类型:
tostring year,replace force
有些时候,将数据录入Stata中后,即使变量是数字,但是Stata识别成了字符型变量,可以使用destring将其转化为数值型变量。将上一步转换为字符型的year变量转化为数值类型:
destring year,replace force
8、substr() 命令substr()函数可以截取字符串的某些位置,通常结合tostring/destring命令使用
截取年份变量year的后两位:
第一步,如果year变量是数值型,先将其转换为字符型
tostring year,replace force
第二步,采用substr()函数截取后两位g year_last2=substr(year,3,2)
参数year,3,2分别表示从year变量的第3个字符开始,截取2个字符。
第三步,将year和year_last2变量转化为数值型destring year year_last2,replace force
9、rename 命令格式为rename old_var new_var
10、drop/keep 命令如果想删除某个或多个变量、删除某些样本,可以使用drop命令!
如果想保留某个或多个变量、删除某些样本,可以使用keep命令!
11、duplicates drop 命令
有些时候,如果录入数据时存在重复的样本,那么可以使用dupicates drop命令将重复数据删除!
*- 现在edit窗口随便复制粘贴到最后,然后按照下面操作 *- 列出重复的数据 duplicates list make *- 删除重复的数据 duplicates drop make, force
12、clear和cls命令
如果想要删除所有的样本数据,可以使用clear命令,数据无价,一定要做好备份哇!如果想要清屏,让stata的结果显示窗口干净些,就用cls命令。
注意,cls只是清屏而已,并没有删除stata运行的数据哦,和clear是不一样的哇!
完整代码
sysuse auto, clear
*- 生成对数形式
gen lnprice = ln(price)
*- 生成对数形式,放在price后,after
gen lnprice1 = ln(price) , a(price)
*- 生成对数形式,放在price前,before
gen lnprice2 = ln(price) , b(price)
*- 将mpg缩小10倍
replace mpg = mpg/10
*- replace和gen命令组合使用
*- 设置虚拟变量的一种方式
gen d = 0 if rep78 <= 3
replace d =1 if rep78 > 3
*- 用by——按照rep78对price变量数据分组求最小值
sort rep78
by rep78 : egen meanprice_rep78_by = mean(price)
*- 用bys——按照rep78对price变量数据分组求最小值
bys rep78 : egen meanprice_rep78_bys = mean(price)
*- encode,生成数值型变量
encode make, gen(m)
*- decode,生成字符型变量
decode m, gen(strm)
*- 现在edit窗口随便复制粘贴到最后,然后按照下面操作
*- 列出重复的数据
duplicates list make
*- 删除重复的数据
duplicates drop make, force