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