如果有一批其他格式的数据,如 Excel,CSV 等,如何批量转为 Stata 的 .dta
格式数据?
先来看单一数据的处理思路,先 import
到 Stata,经过变量名类型转换、重命名变量名等系列数据清理工作,再 save
为 dta 数据。
如果有许多数据,无非是套用循环,对待转换的数据文件进行批量操作。那么待解决的问题有:
fs
可将指定类型文件名存为返回值,调用即可;local
。subinstr()
和 substr()
函数的使用。substr() 用于截取指定长度的字符串,这里用于选中文件的后缀,即截取内容为后缀;subinstr() 用于将指定字符串替换,此处用于将后缀替换为空白,即可得文件名。下面以几个 .xlsx
数据为例,进行演示。
* 使用 -fs- 命令
* ssc install fs, replace
fs *.xlsx
foreach file in `r(files)'{
local filename = subinstr("`file'",substr("`file'",-5,.),"",.)
import excel using "`file'", clear
save "../output/`filename'.dta", replace
}
* 定义暂元
local files: dir "`c(pwd)'" files "*.xlsx"
foreach file in `files'{
local filename = subinstr("`file'",substr("`file'",-5,.),"",.)
import excel using "`file'", clear
save "../output/`filename'.dta", replace
}