stata命令

CFPS计算分性别家庭子女数
根据fid18分组,增加变量 male_size,其值为根据fid18分组,gender_update=1的总数(fid18为家庭编号,家庭编号相同则为同一家庭)
egen male_size=count(fid18) if gender_update==1,by(fid18)
egen female_size=count(fid18) if gender_update==0,by(fid18)
egen list=seq(),to(1000) by(fid18)
egen fam_size=rowtotal(male_size female_size)
ereplace female_size=count(fid18) if gender_update==0,by

abs(x) 绝对值
exp(x) 指数函数
log(x) 自然对数
log10(x) 常用对数
sqrt(x) 平方根
uniform(x) 生成(0,1)内均匀分布的伪随机数
length(x) 计算长度
substr(s,n1,n2) 获得从S的n1个字符开始的n2个字符组成的字符串
real(x) 将字符串s转换为数值函数
trim(x) 去除字符串前面和后面的空格
int(x) 去掉x的小数部分,得到整数
sum(X) 求和
max(x) min(x) 最大值最小值
_n 当前观察值的位置
_N 观察值的总个数

set obs: 增加空记录
set obs 20 //增加20条空白记录
format: 改变数据格式
format tjrq %td //将tjrq改成日期形式

centile: 百分位数计算
centile x, centile(2.5,50,97.5) //计算变量x的2.5,50.97.5百分位数
23、tab:頻数表达
tab sex //计算两个性别各自的頻数
tab sex group //看看各组性别分布的情况
tab group, sum(x1) //在各组内对x1统计分析

将所有空值全部替换成0值:
一个个变量replace 很麻烦,可以用以下简便方法
mvencode _all, mv(0)
如果使用上述命令,仍有一部分缺失值并未替换成0,可用下述命令强制转换
mvencode _all, mv(0) override

‘将字符型转为数值,例如将行业分类变为数字编码、省份变为数值:
encode var, gen(var1)

将str格式转变为int或long格式:
destring var1 var2,replace

合并两个数据集merge:

merge 1:1 Stkcd year using "目录路径\数据.dta"
不生成_merge变量,并且保留_merge

merge 1:1 Stkcd year using "目录路径\数据.dta",keep(1 3) nogen

判断字符串有没有包含特定字符,例如筛选出年报,则日期要包含‘12-31’:

keep if strmatch(var, "*12-31*")


把类型转换成int:


recast int Year


排序(sort,gsort):

sort命令:在STATA中对观测值(行)根据特定变量进行升序排序。


gsort命令:在STATA中对观测值(行)进行升序或降序排列(多变量时可以是升序和降序的组合)。


sort完整代码:


sort varlist

gsort完整代码:

gsort [+|-] varname [[+|-] varname ...] [, g(newvar) m]
[+|-]:[+]为升序,[-]为降序,默认升序;

varname:排序依据的变量;

[generate(newvar)]:生成表示排序顺序的新变量(1, 2, 3, ...)

[mfirst]:missing first,将缺失值排在最前面,默认为排在最后

根据某一分隔符进行分割成多个变量:

split date,parse(", "" ") gen(ndate) notrim //根据,和空格进行分割 

剔除前20%的数据(需要先排序)


egen p20 = pctile(invest), p(20)

egen p80 = pctile(invest), p(80)

 

有条件的计数:

count if price > 500

bys industry year: egen x = count(var) if var>= 0

删除重复值
duplicates drop Stkcd Year,force

posted @ 2023-02-06 21:13  myrj  阅读(577)  评论(0编辑  收藏  举报