如何解决使用循环将多个.csv文件转换为.dta
我有一个包含18个.csv文件的目录。我想在清除数据并附加所有数据之前将它们全部转换为.dta。这是我到目前为止的代码:
cd "/Volumes/Extreme SSD/secure/TQIP/2007/PUF AY 2007/CSV"
mkdir "stata"
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
}
我想将所有新的.dta文件保存到第二行中创建的单独的子目录“ stata”中。关于如何融入循环的任何想法?
解决方法
使用本地跟踪主文件夹。然后在每个读取/保存操作中使用本地方法处理绝对文件路径。如果您从事多个项目,我团队的经验cd
容易出错,因此应避免使用。见下文:
local csv_directory "/Volumes/Extreme SSD/secure/TQIP/2007/PUF AY 2007/CSV"
mkdir "`csv_directory'/stata"
clear
local myfilelist : "`csv_directory'" files "*.csv"
foreach file of local myfilelist {
insheet using "`csv_directory'/`file'",comma clear
local outfile = subinstr("`file'",".csv","",.)
save "`csv_directory'/stata/`outfile'",replace
}
此外,如果您要做的就是允许Stata用新数据替换内存中的数据,请使用insheet,clear
而不是drop _all
。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。