stata小小白Stata

常用stata命令集锦

2020-02-10  本文已影响0人  Hobbit的理查德

将之前工作中用到的一些命令进行如下汇总,还有些后添加的,以后再续:

*解码
unicode encoding set gb18030
unicode analyze *.dta
unicode translate *.dta,invalid(mark)

*修改工作目录
cd D:\1Ressia

*数据调用
use XXX,clear

*日志记录
log using process.log,replace
log close

*浏览数据
browse

*编辑数据
edit

*编码表
codebook

*新建do文件
doedit

*变量描述
d variabl0358-variabl0362

*重命名
rename WeChat WeChat_uibe

*新增变量
gen uni_prov=university

*变量命名
label var uni_prov "高校所在省份"

*变量移动
order uni_prov,after(university)

*变量清洗
replace uni_prov="安徽" if university=="安徽新华学院"

*去除字符里的换行
replace uni_name=subinstr(uni_name,char(10),"",.)
*去除字符里的空格
replace uni_name=subinstr(uni_name," ","",.)

*数值型重新编码
recode Q73 (1=5)(2=4)(4=2)(5=1)

*字符串转数值,可加force强制转换(慎重使用)
destring uni_region,replace

*数值转字符串,可加force强制转换(慎重使用)
tostring uni_region,replace

*含值标签的值转为文本型
decode P2Q8D1,gen(P2Q8D1new)

*增加值标签
label define uni_region 1"京津沪" 2"东部" 3"中部" 4"西部" 5"东北"
label value uni_region uni_region

*删除值标签
label drop uni_region

*复制值标签
label copy uni_region

*生成暂时变量(不会出现新变量)
tempvar mean_Zscore1 sd_Zscore1

*分层计算(含函数)
bysort RE_P2Q1C RE_P2Q1B:egen `mean_Zscore1'=mean(RE_P2Q1DR1)

*频率等分成组
xtile g_income=RE_P7Q3,nq(5)

*纵向合并,可加force强制合并
append using 999-online_forappend

*横向合并,可加force强制合并
merge 1:1 flid using BJUT_xiaoqu

*保存文件
save 999-online_benke,replace

*重复值报告
duplicates report StudentID

*标记重复值
duplicates tag flid,gen(idtag)

*排序
sort flid logtime

*正向+反向排序
gsort flid -logtime

*删除数据
drop if inlist(idtag,1,2,5,14)&t!=1

*保留数据case
keep if inlist(idtag,1,2,5,14)&t!=1

*字符串时间转为可计算的数值型,得到微秒,转成分钟除以60000,详见help datetime
gen double starttime=clock(StartTime,"YMDhms")

*可恢复操作
preserve

*抽样
sample 308 if AFFILICATION_UNIVERSITY==1&Q24F1==1& RE_Q24BNEW_XLCC_BK==1,count
restore

*多选题拆分
gen BK_P1Q2BR2S1=1 if regexm(BK_P1Q2BR2,"1")==1
gen BK_P1Q2BR2S2=1 if regexm(BK_P1Q2BR2,"2")==1
gen BK_P1Q2BR2S3=1 if regexm(BK_P1Q2BR2,"3")==1
gen BK_P1Q2BR2S4=1 if regexm(BK_P1Q2BR2,"4")==1
replace BK_P1Q2BR2S1=0 if BK_P1Q2BR2!=""&BK_P1Q2BR2S1!=1
replace BK_P1Q2BR2S2=0 if BK_P1Q2BR2!=""&BK_P1Q2BR2S2!=1
replace BK_P1Q2BR2S3=0 if BK_P1Q2BR2!=""&BK_P1Q2BR2S3!=1
replace BK_P1Q2BR2S4=0 if BK_P1Q2BR2!=""&BK_P1Q2BR2S4!=1

*排序题
forvalues i = 1(1)13 {
gen BSU_P3Q2BAS`i'=5  if BSU_P3Q2B1==`i'
}
forvalues i = 1(1)13 {
replace BSU_P3Q2BAS`i'=3  if BSU_P3Q2B2==`i'
}
forvalues i = 1(1)13 {
replace BSU_P3Q2BAS`i'=1  if BSU_P3Q2B3==`i'
}

forvalues i = 1(1)13 {
replace BSU_P3Q2BAS`i'=0  if BSU_P3Q2BAS`i'==. &(BSU_P3Q2B1!=.|BSU_P3Q2B2!=.|BSU_P3Q2B3!=.)
}

order BSU_P3Q2BAS1, after(BSU_P3Q2B3)
forvalues i =2(1)13 {
local t=`i'-1
order BSU_P3Q2BAS`i',after(BSU_P3Q2BAS`t')
}
label var BSU_P3Q2BAS1 "(1)通识性知识与技能"
label var BSU_P3Q2BAS2 "(2)专业性知识与技能"
label var BSU_P3Q2BAS3 "(3)学习能力"
label var BSU_P3Q2BAS4 "(4)创新能力"
label var BSU_P3Q2BAS5 "(5)沟通与表达能力" 
label var BSU_P3Q2BAS6 "(6)组织与管理能力"
label var BSU_P3Q2BAS7 "(7)执行能力"
label var BSU_P3Q2BAS8 "(8)自我管理能力"
label var BSU_P3Q2BAS9 "(9)职业适应能力"
label var BSU_P3Q2BAS10 "(10)职业规划能力"
label var BSU_P3Q2BAS11 "(11)专项能力及运动技术水平"
label var BSU_P3Q2BAS12 "(12)教学实践能力"
label var BSU_P3Q2BAS13 "(13)科研能力"

*变量拆分
split password,parse(,) gen(pw_school)

*循环(数字),可加条件
forvalues i=1(1)7{
replace Q15AS`i'=. if Q15AS`i'==0
}


*循环(变量)
foreach x of varlist option_urban-option_wage_benefit{
label values `x' selectionvalues
}

*频率
table A B
tab A
tab1 A B
tab self_dis P3Q16,row chi2

*变量虚拟
tab x,gen(y)

*多重效应(需要先安装mrtab)
ssc install mrtab
mrtab RE_P1Q15S1-RE_P1Q15S5

*分组统计
tabstat RE_P1Q4 RE_P1Q5,statistics(mean sd) by(P1Q3)

*描述统计
sum teachingtype1 teachingtype2 teachingtype3

*皮尔逊相关
pwcorr teachingtype1 teachingtype2 teachingtype3 P3Q18S1 P3Q18S2 P3Q18S3,sig star(0.05)

*线性回归
reg P3Q18S1 teachingtype1 teachingtype2 teachingtype3

*T检验
ttest P3Q18S1,by(teaching1)

*单因素方差分析及事后检验
oneway P4Q2O1 g_income2,bonferroni 

*方差分析(含交互)及简单效应
anova meanedutime Year gender Year#gender if education==2&discipline_g2==3
contrast gender@Year

*暂元
global control "city fatheredutime motheredutime i.familyincome_g UNI_TYPE_2 excellence certificate_english leader ib3.discipline_g2"
**Logistic回归
logistic jiuye sex i.Year $control if education==2&(discipline_g2==3|discipline_g2==4),or robust
logit jiuye sex i.Year $control if education==2&(discipline_g2==3|discipline_g2==4),or robust
*基于似无相关模型SUR的检验
forvalues i=2005(4)2013 {
logistic luoshi sex $control if education==2&(discipline_g2==3|discipline_g2==4)&Year==`i',or 
est store luoshi`i'
}
suest luoshi2005 luoshi2009 luoshi2013

foreach x of var sex city fatheredutime motheredutime UNI_TYPE_2 excellence certificate_english leader {
forvalues i = 2005(4)2009 {
local t=`i'+4
test [luoshi`i'_luoshi]`x'=[luoshi`t'_luoshi]`x'
}
}

sw logit quality samenum longestrate relativefminute ShortTimeClickCount mode allmode IPdup allguai guainum,pr(0.05) or
*模型评价
firthfit
estat gof
estat ic   
lroc
predict pprob
somersd quality pprob

*根据某个变量拆分excel文件
levelsof yxmc,local(level1)
foreach x of local level1 {
preserve
keep if yxmc=="`x'"
export excel using "D:\1Ressia\excel\分院校-`x'.xlsx", firstrow(varlabels) nolabel
restore
}
*根据某个变量拆分excel文件-变量标签
levelsof re_P4Q12,local(xiaoxue)
foreach x of local xiaoxue {

export excel using "D:\1Ressia\小学-`:label (re_P4Q12) `x''.xlsx" if re_P4Q12==`x',firstrow(varlabels) replace

}


*频率表导出到excel,需要先安装tabout
tabout  Q6  using basicinfo.xls,replace c(fre col) f(0 2)
*多选题导出
logout,   save(basicinfo) excel replace:mrtab  Q9S1-Q9S11

*频率表批量导入excel
foreach i in Q20 Q21 Q22 Q23 Q40 Q41 Q49 Q50 Q51 Q52 Q60 Q61 Q62 Q63{
tabout `i' using cleantext.log,append c(fre col) f(0 2)
}

*内部一致性
alpha

*因子分析:
factor P2Q18O1 P2Q18O2 P2Q18O3 P2Q18O4 P2Q18O5 P2Q18O6 P2Q18O7 P2Q18O8
screeplot
scoreplot
loadingplot
rotate

*正态检验
swilk var1

*统计量再计算
scalar qir=r(p75)-r(p25)
dis qir
上一篇下一篇

猜你喜欢

热点阅读