0

I am using a Python package that allows me to integrate data retrieved in Python to be transferred to Stata. As I am doing this across 190 countries, it takes a long time to retrieve multiple variables when I call a command.

I was hoping to write a loop that would pull a single variable each time and then append it. However, I get either an invalid syntax or an invalid 'append' error.

Please find below my first attempt.

use "~\data.dta"
local indicator_list BFDA_BP6_USD BFDL_BP6_USD BFP_BP6_USD
foreach indicator in `indicator_list' {
local command ecosuse data, database(ECDATA_BOP) country(ALL) indicator(`indicator') freq(Q) clear
if `first_iteration' == 1 {
local first_iteration 0
}
else {
`command', append
}
}
Nick Cox
  • 35,529
  • 6
  • 31
  • 47

1 Answers1

0

You have too many commas in the else call. There is already a comma in the command and another comma isn't illegal in itself but turns out to be quite wrong for what I guess you want.

Alternatively, this would be simpler for the major part of your code.

ecosuse data, database(ECDATA_BOP) country(ALL) indicator(BFDA_BP6_USD) freq(Q) clear

foreach indicator in BFDL_BP6_USD BFP_BP6_USD { 
    ecosuse data, database(ECDATA_BOP) country(ALL)  indicator(`indicator') freq(Q) clear append 
}

I've never used ecosuse or read its documentation, so there may be other errors. In any case there is not here a self-contained reproducible example.

Nick Cox
  • 35,529
  • 6
  • 31
  • 47
  • Thanks Nick, this was very helpful and works well. Looks like I cannot use `append` with `ecosuse`, however I was able to `merge m:1` in lieu of this limitation. – maroonduck Sep 01 '23 at 16:41