【问题标题】:Import from Excel via foreach loop通过 foreach 循环从 Excel 导入
【发布时间】:2015-10-12 06:56:44
【问题描述】:

我打算 import 并通过 foreach 循环处理各种 Excel 文件。 import 本身不起作用,因为 Stata 不会将 `x' 识别为 Excel 文件名的替代品。

local excelfiles "bb_01 bit0_2 bun comp_03 comp_c01m LLU-ck"
foreach item of local excelfiles {
import excel using "D:\...\...\...\Data\Files\`x'.XLS", sheet("DynamicReport") cellrange(A2:AI201) firstrow
keep v1 v2 v3 v4
save "D:\...\...\...\...\`x'.dta", replace

我得到的错误是file D:\...\...\...\...\Data\Files.XLS not found

【问题讨论】:

  • 'smart quote' (ASCII Chr(96)) 是否故意用作 `x'.XLS 中的第一个刻度? x.dta 中还有另一个。
  • 请参阅stackoverflow.com/help/mcve 获取有关提出可重现问题的指导。
  • 请注意,Excel(大写或大写 E)无疑是专有名称。但是,Stata 倾向于在其命令名称中最大限度地使用小写字母,因此命令名称(在问题中正确呈现)是 import excel

标签: excel foreach import stata


【解决方案1】:

这里有各种各样的问题。

  1. 您的代码不一致。您在foreach 语句中声明item,但在循环中引用x。因此,就 Stata 而言,从未定义本地宏 x。这本身并不是一个错误,但 Stata 会用空字符串替换对不存在(为空)的本地宏的引用,结果是您报告。

  2. 如果将x 的引用替换为item 的引用,您的代码仍然无法工作。请参阅(例如)http://www.stata.com/manuals14/u.pdf 18.3.11 和 http://www.stata-journal.com/sjpdf.html?articlenum=pr0042 以获取有关本地宏引用立即跟随反斜杠的警告。问题是反斜杠既是转义字符又是完整 Windows 文件路径中的分隔符。应该通过在文件路径中使用正斜杠来解决冲突,即使在 Windows 中也是如此。

  3. 在您显示的代码段中,循环永远不会关闭。

否则我无法检查您的代码,因为您的代码不可重现。我假设三个点... 不是字面意思,而是替换了不重要的细节。

【讨论】:

  • 这是反弹问题! (正如你在 1 中提到的,不是指 x)。正如您可能已经猜到的那样,我对stata很陌生。非常感谢您的时间和耐心。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-07-13
  • 1970-01-01
  • 1970-01-01
  • 2013-10-01
  • 1970-01-01
  • 2017-01-27
  • 1970-01-01
相关资源
最近更新 更多