Расширение файлов Excel сохраняется при выполнении цикла импорта в Stata - PullRequest
0 голосов
/ 28 апреля 2018

Я не понимаю, почему при выполнении следующего простого кода мои файлы сохраняются как xxx.xls.dta вместо xxx.dta и как это исправить.

clear all
cd "C:\Users\User\Documents\PhD\Research\Data\acqua_costiera"
global RawAcqua "C:\Users\User\Documents\PhD\Research\Data\acqua_costiera"

local acquacost : dir "C:\Users\User\Documents\PhD\Research\Data\acqua_costiera" files "*.xls", respectcase

foreach f of local acquacost {
    import excel using "$RawAcqua\\`f'", cellrange(B4:N43310) firstrow clear
    save "`f'.dta", replace
}

Я пытался посмотреть другие подобные фрагменты кода в Интернете, но я действительно не понимаю, в чем моя ошибка.

Я зацикливаюсь на всех файлах в этом каталоге, но файлы называются «acqua_costiera_`year», поэтому я думаю, что какой-то другой цикл тоже может сработать.

1 Ответ

0 голосов
/ 28 апреля 2018

Ваша проблема может быть легко проиллюстрирована на следующем примере с игрушкой:

local acquacost one.xls two.xls three.xls

foreach f of local acquacost {
    display "`f'.dta"
}

one.xls.dta
two.xls.dta
three.xls.dta

Вам нужно указать Stata, чтобы он сохранял только имя файла, а не расширение:

foreach f of local acquacost {
    display "`= substr("`f'", 1, strpos("`f'", ".") - 1)'.dta"
}

Здесь я использую функцию strpos(), чтобы получить позицию первого периода, а затем использую ее в качестве контрольной точки для извлечения соответствующей части string с использованием функции substr().

Для сохранения файла с правильным именем просто используйте save вместо display.

...