一、变量批量重命名:
比如将一批变量的 a_2 b_2 c_2 d_2 e_2的后缀改为w
ren (*_2) (*w)
二、检查重复数据常用命令:
duplicates report x //报告x变量有无重复
duplicates list x //列出重复的记录
bys x: gen cn=_N
browse if cn>1
drop cn //浏览具体的重复值,以便下一步分析和处理
duplicates drop x //删除重复值,保留重复值的第一条记录
三、数据横纵向转换:
long
+------------+ wide
| i j stub | +----------------+
|------------| | i stub1 stub2 |
| 1 1 4.1 | reshape |----------------|
| 1 2 4.5 | <---------> | 1 4.1 4.5 |
| 2 1 3.3 | | 2 3.3 3.0 |
| 2 2 3.0 | +----------------+
+------------+
reshape之前要检查j,stub有无重复记录,有重复无法reshape。
纵向转成横向——如果J里面是汉字的话首先要将变量重新命名为英文字母(rt)或者数字的才可以打横后当做变量名:
gen rt="BP" if j=="血压"
replace rt="height" if j=="身高"
reshape wide 所有同一个i对应不一致的变量,i() j() string //如果j是string,后面要加string 标记
横向转成纵向——要把横向数据命名为 stub1 stub2等比较整齐的名称,生成一个新的J变量。
reshape long stub, i( ) j(新变量名)
四、数据类型转换: destring, replace force
tostring, replace force
五、截取生成新变量:例如血压(BP)130/85截取为高压(SBP)和低压(DBP)
gen sbp=real(substr(bp,1,3))
gen dbp=real(substr(bp,-2,2))
六、计算生成新变量:例如用身高和体重的数据计算BMI
gen bmi=weight^10000/(height^2) //体重乘以一万除以身高的平方
七、数据库合并:
merge:加入新变量 append:变量不变,加入新纪录
merge 1:1/1:m/m:1 barcode using "file.dta" //merge所用的变量一定不能重复,要先处理
append using filename
八、计算变量X中相同的记录数:
例如变量x代表体检编号,有几个相同的体检编号就代表这个人体检了几次,现在要筛选出体检次数超过三次的人
gen N=_N
by tjid, sort: gen N1=_N // N1即代表每个tijd有多少个观测值
drop if N1 <=3 或者 keep if N1 >=3