2016-02-05 269 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' - 方便的提示,谢谢! –