小结

本次主要是对导入数据的处理

比如有时需要对变量取对数,gen lnvar = ln(var),以及求平均数等egen;

字符型数据和数值型数据的转换,可以生成新的encode和decode出马,也可以在原来的变量上直接变换,destring和tostring,replace force,强制执行;

改变变量名字rename;

等等等等,具体详见内容

1、gen命令


gen命令可以创建新的变量,可简写为g

sysuse 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

Logo

瓜分20万奖金 获得内推名额 丰厚实物奖励 易参与易上手

更多推荐