STATA备忘录

1.某行数据作为变量名-nrow

ssc install nrow
nrow [row#] [, keep varlist(varlist)]
nrow //第一行作为变量名,删除第一行
nrow,keep //第一行作为变量名,并保留第一行
nrow, varlist(A B) keep //A、B列的第一行作为A、B的名称,并保留
nrow 2, varlist(C) keep //C列的第2行作为C列的名称,并保留第二行

2.某行数据作为变量标签-labone

ssc install labone
labone [varlist] [,options]
labone, nrow(1) //第一行作为变量标签
labone, nrow(1 2) //第1、2行作为变量标签,默认空格连接
labone, nrow(1 2) concat(/) //第1、2行作为变量标签,并用/连接

3.数据中有NA无法destring-ignore

destring varname, replace ignore("NA") //destring后NA会被替换为缺失值

3.1 检查数据中的非数字字符

tab var if regexm(var,"[^0-9.]")

4.长宽数据变换-gather、spread

ssc install tidy
gather var1 var2, variable(name1) value(name2) //宽数据变为长数据,name1为分类变量名,name2为值名称
spread name1 name2 //长数据变为宽数据
reshape var1 var2, i(stkcd year) j(class) //长变宽,多变量

5.合并所有子文件夹中的excel文件

根文件路径下有子文件夹2013-2016,其下分年份分别有子文件夹,各年份子文件夹中有数个excel文件,合并这些excel文件

cd 根文件路径
forvalues n = 2013/2016{
	local s: dir "根文件路径/2013-2016/`n'"  files "*.xlsx",  respectcase
	foreach i in `s' {
		import excel "根文件路径/2013-2016/`n'/`i'", sheet("`n'") firstrow case(lower) clear
		foreach x of varlist*{
			local vlabel = `x'[1]
			label variable `x' "`vlabel'"
		} //设置第一行作为数据标签
		drop in 1
		save "`i'.dta",replace
	}
}
// ssc install openall,replace
openall * //纵向合并所有dta文件
save "postnum.dta",replace

5.1路径下所有xlsx文件名存入暂元s中-local

local s: dir "路径“ files "*.xlsx", respectcase

5.2纵向合并所有dta文件-openall

ssc install openall
openall *

6.保留重复数据中最大值-gsort、tag

* 保留一个组中最大的
clear
input id year tog 
  1 2000 0
  1 2000 1
  1 2001 0
  1 2003 1
  1 2003 2
  2 2000 3
  2 2001 0
  2 2002 0
  3 2000 0
  3 2000 1
  3 2001 1
end
* 按id year分组,保留tog最大的数据
gsort id year -tog //aaa负向排序
egen s=tag(id year)
keep if s == 1

7.导入数据-import

import delimited "文件名.csv",delimiter(space)  encoding(utf8) clear
import excel "文件名.xlsx", sheet("sheet1") firstrow allstring clear

7.1 导出数据

 * 输出Excel格式
export excel using "filename.xlsx",firstrow(variables) keepcellfm
  • 2
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值