2017-01-21 7 views
0

Я следую инструкциям от this link о том, как добавлять файлы Stata через foreach. Я думаю, что это довольно просто. Однако, когда я пытаюсь обратиться к каждому f в datafiles в моем foreach, я получаю сообщение об ошибке:Stata: Неверная ошибка `` 'при использовании локального макроса

invalid ` 

Я включил код из моего файла .Не ниже. Я установил свой рабочий каталог, а данные находятся в подпапке под названием csvfiles. Я пытаюсь вызвать каждый файл f в подпапку csvfiles, используя мой локальный макрос datafiles, а затем добавьте каждый файл в совокупный набор данных Stata под названием data.dta.

clear 
local datafiles: dir "csvfiles" files "*.csv" 

foreach f of local datafiles { 
preserve 
insheet using “csvfiles\`f'”, clear 
** add syntax here to run on each file** 
save temp, replace 
restore 
append using temp 
} 

rm temp 
save data.dta, replace 
+1

Причины, по которым не используется обратная косая черта, видны на видном месте, например. http://www.stata.com/manuals14/u18.pdf 18.3.11 и http://www.stata-journal.com/sjpdf.html?articlenum=pr0042 –

ответ

2

Символ обратной косой черты имеет смысл Stata: это предотвратит интерпретацию любого следующего символа, который имеет особое значение для Stata, в частности левая одинарная кавычка

` 

не будет интерпретироваться как указание ссылки на макрос.

Но все не потеряно: Stata позволит вам использовать символ косой черты в именах путей в любой операционной системе, а в Windows позаботится о том, что нужно сделать, чтобы успокоить Windows. Замена команды вашего листка на

insheet using “csvfiles/`f'”, clear 

должен решить вашу проблему.

Обратите внимание, что инструкции, с которыми вы связаны, выполняли именно это; некоторые из кодов включают обратную косую черту в именах путей, но там, где включен макрос, вместо этого используются косые черты.

+0

Легко исправить - спасибо! – kathystehl