2016-02-05 107 views
-1

我有一個含有多個的CSV文件,例如文件夾「leeds dz.csv」,「leeds gh.csv」,「leeds fr.csv」。文件名的第一部分是恆定的(即總是「利茲」)。導入的.csv文件並保存爲.dta

我想每個單獨導入到Stata的,轉換爲.dta文件和save它。目前,我有這樣的代碼:

cd "etcetc" 
clear 
local myfilelist : dir . files"*.csv" 
foreach file of local myfilelist { 
drop _all 
insheet using `file', comma 
local outfile = subinstr("`file'",".csv","",.) 
save "`outfile'", replace 
} 

的代碼工作正常,如果我手動重命名所有的.csv文件刪除「利茲」的一部分,也就是說,如果每個.csv被命名爲「dz.csv」,而不是「利茲dz.csv」等

但是,如果我不這樣做刪除我收到錯誤‘無效‘dz.csv’’

我猜這事做與我的代碼3號線,特別是「* .csv」。但我不確定如何修改代碼/爲什麼它不允許我導入名稱中有空格的文件?

回答

0

insheet using `file', comma 

將與包含空格的任何文件名的問題。

嘗試

insheet using "`file'", comma 

insheet的幫助是在這個非常明確:

如果沒有擴展名被指定的文件名,.RAW假設。如果您的 文件名包含嵌入的空格,請記住將其用雙引號括起來。

+1

通過拖拽多個幫助文件以及問題的原始聲明,表明在執行代碼以追蹤其執行之前,您並不知道使用'set trace on'和'set tracedepth 1'來允許您在這種情況下縮小了發出錯誤消息的命令的範圍。 – 2016-02-08 00:39:04

+0

之前沒有遇到'設置tracedepth 1' - 方便的提示,謝謝! –