Следующее работает для меня и более эффективно:
forvalues i = 1 / 2 {
local files `: dir . files "county`i'*"'
display "`: word `: word count `files'' of `files''"
}
county1-year1975.xls
county2-year1990.xls
Я использую здесь команду display
для иллюстрации, но вы также можете использовать import
.
Идеяздесь, если вы знаете количество файлов, начинающихся с префикса county
(county1
, county2
и т. д.), вы можете получить имена файлов для каждого префикса в локальном макросе, используя расширенную функцию макроса dir
,Затем вы просто подсчитываете количество слов и получаете последнее.
Обратите внимание, что в этом случае локальный макрос уже будет отсортирован по алфавиту. Тем не менее, в более общем случае вы можете отсортировать элементы в макросе с помощью расширенной функции макроса list sort
.
Например:
local files : list sort files
В следующих случаях mata
используется для обхода максимального символаограничение в локальных макросах Stata:
forvalues i = 1 / 2 {
mata: fl = sort(dir(".", "files", "county`i'*"), 1); st_local("file", fl[rows(fl)])
display "`file'"
}
Этот подход будет полезен, если у вас есть большое количество файлов, имена которых не могут вписаться в локальный макрос.