全部版块 我的主页
论坛 计量经济学与统计论坛 五区 计量经济学与统计软件 Stata专版
616 2
2023-08-25
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);
出现了这个问题是为什么?



二维码

扫码加我 拉你入群

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

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

全部回复
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`,保持循环计数器的正确
二维码

扫码加我 拉你入群

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

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

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

扫码加我 拉你入群

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

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

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群