我有一个包含超过60个excel工作簿的文件,我想将它们中的每一个转换为stata中的.dta文件。我在网上搜索,但找不到一个像样的循环方式。我写了一段需要专家帮助的代码。在一个目录中,想要创建一个循环,将它们保存为.dta文件。代码如下
forvalues i=1/60{
import excel "D:\Okay\""`i'.xlsx", sheet("Sheet1") firstrow clear
save "D:\Okay\""`i'.dta"
}
答案 0 :(得分:1)
我们无法试用您的代码,因为它特定于您的计算机。在发布问题之前,请先研究https://stackoverflow.com/help/mcve。
但很明显
\Okay\""`i'.xlsx"
不太可能有所帮助。正如多次记载的那样 - 例如[U] 18.3.10 http://www.stata.com/manuals14/u18.pdf和http://www.stata-journal.com/sjpdf.html?articlenum=pr0042 - 你想在Windows下使用的反斜杠(最好不要假设每个人都认可你的操作系统)也在Stata中扮演逃避角色。
该命令最好结束
\Okay/`i'.xlsx"
和类似注释适用于提及文件的其他命令行:在本地宏引用正斜杠之前更改反斜杠,并删除不必要的双引号。
事实上,这一切都是完全可以避免的。考虑
cd "D:\Rami Chehab\University Degrees & Courses\PhD in Labour Economics\Data\Data 2016\UNCTAD\Okay"
forvalues i=1/60 {
import excel `i'.xlsx, sheet("Sheet1") firstrow
save `i'.dta
}
一旦cd
在目录或文件夹中工作,就可以将文件名保持在最低限度。
答案 1 :(得分:0)
我在那边做了很多错误;但是,我相信我明白了。这是你必须编码才能工作
forvalues date=1/57{
import excel "D:/Rami Chehab/University Degrees & Courses/PhD in Labour Economics/Data/Data 2016/UNCTAD/Okay/`date'.xlsx", sheet("Sheet1") firstrow clear
save "D:/Rami Chehab/University Degrees & Courses/PhD in Labour Economics/Data/Data 2016/UNCTAD/Okay/`date'.dta"
}