通过 API 下载下来的 CSV 文件里没有标签信息,可以通过同名 TXT 文件(下图右侧)里的信息为变量批量加标签。我这里是将 TXT 文件里 []
的信息作为变量标签,使用正则表达式将每行字段批量改成 label var varName "varlabel"
的形式。
代码里的注释解释下面邻近一行的命令。由于下载的CSV文件没有标签信息,需要通过 TXT 文件批量加标签,这里将 TXT 转为 DO 文件,每行字段改写成 label var varName "varlabel" 的形式。便于在以后将数据文件导入Stata中时,可以批量运行新生成的do文件,以此实现批量加标签的效果。
filesearch "*].txt", local(txtfiles)
foreach txt of local txtfiles {
import delimited using "`txt'", clear
* 去掉部分标签里的括号,其括号里有双引号
replace v1 = ustrregexra(v1, "\(.*\)", "", .)
replace v1 = ustrregexra(v1, "\(.*\)", "", .)
* 在每行最前面加入 "label var "
replace v1 = ustrregexra(v1, "^", "label var ", .)
* 将每行的 "[" 去掉
replace v1 = ustrregexra(v1, "\[", "", .)
* 将每行的 "]" 及后面所有的字符去掉
replace v1 = ustrregexra(v1, "\].*", "", .)
local txt: subinstr local txt ".txt" ".do", all
export delimited using "`txt'", replace novarnames
}