编写循环从外部Python数据库提取变量的Stata代码报错求助
问题分析与修正方案
你的代码有三个核心问题导致报错:
- 未初始化
first_iteration宏,Stata会把未定义的宏视为空字符串,第一次执行iffirst_iteration' == 1`时会触发语法错误 ecosuse的clear选项和append选项冲突——clear会清空当前内存中的数据集,而append需要基于现有数据集添加,二者不能同时使用- 循环中命令拼接的逻辑错误,后续迭代的命令不该保留
clear参数
修正后的代码如下:
* 初始化迭代标记 local first_iteration 1 local indicator_list BFDA_BP6_USD BFDL_BP6_USD BFP_BP6_USD foreach indicator in `indicator_list' { if `first_iteration' == 1 { * 第一次迭代:提取第一个指标的数据,作为基础数据集 ecosuse data, database(ECDATA_BOP) country(ALL) indicator(`indicator') freq(Q) clear local first_iteration 0 } else { * 后续迭代:提取指标数据并追加到现有数据集,去掉clear选项,添加append ecosuse data, database(ECDATA_BOP) country(ALL) indicator(`indicator') freq(Q) append } } * 如果需要和初始的data.dta合并,执行以下命令(可选) * append using "~\data.dta"
额外说明
如果你的需求是把提取的所有指标数据追加到一开始的data.dta中,那应该去掉第一次迭代的clear,并在循环前保留use "~\data.dta",调整后的代码如下:
use "~\data.dta", clear local indicator_list BFDA_BP6_USD BFDL_BP6_USD BFP_BP6_USD foreach indicator in `indicator_list' { ecosuse data, database(ECDATA_BOP) country(ALL) indicator(`indicator') freq(Q) append }
内容的提问来源于stack exchange,提问作者maroonduck
相关产品推荐
相关产品推荐

