CSMAR 数据库通过 TXT 文件加标签

通过 API 下载下来的 CSV 文件里没有标签信息,可以通过同名 TXT 文件(下图右侧)里的信息为变量批量加标签。我这里是将 TXT 文件里 [] 的信息作为变量标签,使用正则表达式将每行字段批量改成 label var varName "varlabel" 的形式。

通过 API 方式下载的数据没有标签信息

代码里的注释解释下面邻近一行的命令。由于下载的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
}
用 CSMAR 下载的 TXT 文件为变量批量加标签

你可能感兴趣的:(CSMAR 数据库通过 TXT 文件加标签)