You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Stata合并目录下含GTAH的.dta文件报错求助

Stata合并含特定字符的.dta文件报错解决

问题场景

要合并目录中所有文件名包含“GTAH”字符串的.dta数据文件,通过生成目标文件列表保存为txt,再循环读取列表进行合并时,出现报错:file 'line' not found r(601)。

错误原因

循环中的append using 'line'使用了单引号,Stata中引用宏变量需要用**反引号()**,单引号会被Stata直接识别为文件名的一部分,而非解析宏变量line`的值,因此找不到对应文件。

修正后的完整代码

** 设置工作目录
cd "C:\Data"

** 列出目录中所有含GTAH的.dta文件
dir *GTAH*.dta 

** 生成文件列表并保存为GTAH_List.txt
! dir *GTAH*.dta /a-d /b >C:\Data\GTAH_List.txt

** 打开文件列表并读取第一行
file open myfile using "C:\Data\GTAH_List.txt", read
file read myfile line

** 将第一个文件保存为主数据集,读取下一行
use `line'
save GTAH_master_data, replace
file read myfile line

** 循环追加剩余数据集,直到文件结束
while r(eof)==0 {
    append using `line'  // 此处将单引号改为反引号
    file read myfile line
}

** 关闭文件(原代码遗漏,建议添加)
file close myfile

更简化的实现方案(无需生成txt文件)

直接用Stata本地宏获取文件列表,无需额外生成txt,代码更简洁:

cd "C:\Data"

** 获取所有含GTAH的.dta文件列表到本地宏
local files : dir . files "*GTAH*.dta"

** 提取第一个文件作为主数据集
tokenize `files'
use `1', clear

** 循环追加剩余文件
forvalues i=2/`: word count `files'' {
    append using ``i''
}

** 保存合并后的数据集
save GTAH_master_data, replace

内容的提问来源于stack exchange,提问作者Ekow_ababio

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.02 03:20:16