【问题标题】:Loop through to Import Multiple Excel Files and convert each workbook in a file to .dta循环导入多个 Excel 文件并将文件中的每个工作簿转换为 .dta
【发布时间】:2016-02-23 19:11:54
【问题描述】:

我有一个包含 60 多个 Excel 工作簿的文件,我想将它们中的每一个都转换为 stata 中的 .dta 文件。我在网上搜索,但找不到一个像样的循环方式。我编写了一个需要专家帮助的代码。在一个目录中并希望创建一个循环以将它们保存为 .dta 文件。代码如下

 forvalues i=1/60{

import excel "D:\Okay\""`i'.xlsx", sheet("Sheet1") firstrow clear
save "D:\Okay\""`i'.dta"

}

【问题讨论】:

  • 从您的代码看来,您有 60 个文件,而不是“文件”中明确说明的 1 个。我没有编辑这个。

标签: excel for-loop stata


【解决方案1】:

我们无法试用您的代码,因为它特定于您的计算机。请在发布问题之前研究https://stackoverflow.com/help/mcve

但很明显

\Okay\""`i'.xlsx"

不太可能有帮助。正如多次记录的那样——例如[U] http://www.stata.com/manuals14/u18.pdfhttp://www.stata-journal.com/sjpdf.html?articlenum=pr0042 中的 [U] 18.3.10 -- 你想在 Windows 下使用的反斜杠(最好不要假设每个人都认识你的操作系统)在 Stata 中也有一个转义字符的作用。

那个命令最好结束

\Okay/`i'.xlsx" 

和类似的 cmets 适用于提及文件的其他命令行:将本地宏引用之前的反斜杠更改为正斜杠,并删除不必要的双引号。

其实这一切都是可以避免的。考虑

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 在目录或文件夹中工作,您就可以将文件名保持在最低限度。

【讨论】:

    【解决方案2】:

    我在那里犯了很多错误;但是,我相信我想通了。这是您必须编写的代码才能工作

      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" 
    
    
      }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-11-14
      • 2014-09-07
      • 1970-01-01
      • 1970-01-01
      • 2015-10-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多