Как токенизировать расширенный макрос (локальный: dir)?

Я знаю, что мое название сбивает с толку в том смысле, чтоtokenize Команда указана для строки.

У меня есть много папок, которые содержат массивные, отдельные, плохо названные файлы Excel (большинство из них скопированы с веб-сайта). Их неудобно выбирать вручную, поэтому мне нужно полагаться на расширенную макро-функцию Stata.local :dir читать их.

Мой код выглядит следующим образом:

foreach file of local filelist {
    import excel "`file'", clear
    sxpose, clear 
    save "`file'.dta", replace
}

Такой код будет генерировать много новогоdta файлы и каталог, таким образом, полон этих файлов. Я предпочитаю создать один новый файл данных для первогоxlsx файл, а затемappend другие к нему внутриforeach петля. Так по сути, естьif-else внутри петли.

Нам нужен индекс макросаfilelist только что создали, так что мы можем написать что-то вроде:

token `filelist'  // filelist is created in the former code

if "`i'" == `1' {
   import excel "`file'",clear
}
else {
   append using `i',clear
}

Я знаю, что мой код неэффективен и подвержен ошибкам: синтаксис выраженияtoken 'filelist' тоже неверно (учитывая, чтоfilelist это не строка). Тем не менее, я все еще хочу выяснить базовую структуру моего псевдокода.

Как я могу исправить свой код и заставить его работать?

Другой более эффективный подход приветствуется.

Ответы на вопрос(1)

Ваш ответ на вопрос