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

如何在Stata中循环合并多个mort_year格式的CSV文件?

问题:批量合并Stata中mort_year格式的CSV文件

我有50个命名为mort_year格式的CSV文件(例如mort70、mort71),每个文件包含year、cause、sex字段,示例数据如下:

mort70内容:

year  cause  sex
1970  HA     M
1970  HA     F

mort71内容:

year  cause  sex
1971  HA     M
1971  ST     M

我尝试用以下Stata代码合并但失败了,求合适的实现方法:

local years "70 71 72 73 74 75 76 77 78"
local file "mort"

foreach file of local years {
clear
import "file_path/`file'"
keep year  cause
append 
}
解决方案

你的代码存在变量名冲突、导入命令错误、append用法不当、文件名拼接错误等问题,以下是两种可行的修正方案:

方案一:先导入基础文件,再循环追加

适合分步验证每一步的导入结果,便于排查问题:

local years "70 71 72 73 74 75 76 77 78"
local prefix "mort"
local data_path "file_path"

// 导入第一个文件作为数据集基础
clear
import delimited "`data_path'/`prefix'`word(1, `years')'.csv", clear
keep year cause

// 循环追加剩余年份的文件
foreach yr of local years {
    // 跳过已导入的第一个文件
    if "`yr'" == "`word(1, `years')'" continue
    // 追加当前年份的文件
    append using "`data_path'/`prefix'`yr'.csv"
    // 保留需要的字段
    keep year cause
}

方案二:批量收集文件路径,一次性导入

更简洁高效,适合文件格式完全统一的场景:

local years "70 71 72 73 74 75 76 77 78"
local file_list ""

// 循环生成所有文件的完整路径
foreach yr of local years {
    local file_list "`file_list' file_path/mort`yr'.csv"
}

// 一次性导入所有文件并保留指定字段
clear
import delimited `file_list', clear
keep year cause

关键修正点说明

  • 变量名冲突:将循环变量从file改为yr,避免和文件前缀变量file混淆
  • 导入命令:Stata导入CSV文件需用import delimited,而非import命令
  • 避免重复清空数据:方案一仅在开始时clear一次,后续用append using追加;方案二直接批量导入,无需循环清空
  • 正确拼接文件名:将前缀mort和年份拼接为完整文件名,注意补充.csv后缀(如果你的文件实际带后缀)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 08:50:30