楼主: allpasskzx
615 2

[编程问题求助] 怎么对不同文件夹里进行合并啊,有没有什么快捷方法 [推广有奖]

  • 0关注
  • 0粉丝

大专生

36%

还不是VIP/贵宾

-

威望
0
论坛币
11 个
通用积分
0.1332
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
748 点
帖子
9
精华
0
在线时间
89 小时
注册时间
2023-5-12
最后登录
2025-3-12

楼主
allpasskzx 发表于 2023-8-25 17:44:56 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
local folder_path = "C:\Users\13188\Desktop\论文杂\数据\工企GVC计算代码及其产生的文件和数据"
local save_path = "C:\Users\13188\Desktop\论文杂\数据\工企GVC计算代码及其产生的文件和数据"

// 设置合并后的文件名和保存路径
local merged_file = "被解释变量面板.dta"

// 创建一个空数据集用于存储合并后的数据
clear

// 循环遍历不同年份的文件夹
local i =2000
while `i' <=2014 {
  // 构建当前文件的完整路径
  local current_file = "`folder_path'/`i'/最终结果(未考虑中间品和贸易商问题).dta"

  // 检查当前文件是否存在
  capture confirm file "`current_file'"

  if _rc == 0 {  // 如果文件存在
    // 导入当前文件
    use "`current_file'", clear

    // 添加年份变量
    gen year = `i'

    // 将当前文件追加到合并后的数据集中
    append using "`merged_file'"
  }

  local i = `i' + 1
}

// 保存合并后的数据集
save "`save_path'/`merged_file'", replace
no variables defined
r(111);
出现了这个问题是为什么?



二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:不同文件夹 有没有 文件夹 行合并 Desktop

沙发
att006 发表于 2023-8-25 18:36:38
可能是因为你在循环内部重新定义了局部宏变量 i,导致循环的计数器被重置,进而导致了错误。在 Stata 中,局部宏变量的重新定义不需要再次使用 local 命令。
以下是修复后的代码示例:
local folder_path "C:\Users\13188\Desktop\论文杂\数据\工企GVC计算代码及其产生的文件和数据"
local save_path "C:\Users\13188\Desktop\论文杂\数据\工企GVC计算代码及其产生的文件和数据"

// 设置合并后的文件名和保存路径
local merged_file "被解释变量面板.dta"

// 创建一个空数据集用于存储合并后的数据
clear

// 循环遍历不同年份的文件夹
local i 2000
while `i' <= 2014 {
  // 构建当前文件的完整路径
  local current_file "`folder_path'/`i'/最终结果(未考虑中间品和贸易商问题).dta"

  // 检查当前文件是否存在
  capture confirm file "`current_file'"

  if _rc == 0 {  // 如果文件存在
    // 导入当前文件
    use "`current_file'", clear

    // 添加年份变量
    gen year = `i'

    // 将当前文件追加到合并后的数据集中
    append using "`merged_file'"
  }

  local i `i' + 1
}

// 保存合并后的数据集
save "`save_path'/`merged_file'", replace

在循环内部的 local i i' + 1中去掉了local命令,这样不会重新定义i`,保持循环计数器的正确

藤椅
allpasskzx 发表于 2023-8-31 15:32:00
att006 发表于 2023-8-25 18:36
可能是因为你在循环内部重新定义了局部宏变量 i,导致循环的计数器被重置,进而导致了错误。在 Stata 中, ...
抱歉一不小心点了踩,非常感谢你的回复,但是我刚刚试了一下还是同样的错误。不知道是怎么回事

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注jltj
拉您入交流群
GMT+8, 2026-2-7 21:26