【问题标题】:How to loop over excel sheet and lists in Stata?如何在Stata中循环Excel工作表和列表?
【发布时间】:2015-06-28 15:03:25
【问题描述】:

我刚开始使用 Stata,但无法弄清楚以下内容。

  1. 如何循环遍历 Excel 工作表和索引列表。这现在工作正常。

    clear all
    set more off
    
    local mysheets 1996 2000 2003 2007 2008 2010 
    local indices index1 index2 index3
    
    foreach sheetname of local mysheets {
    
        import excel "C:\stata\Data.xls", sheet(`sheetname') firstrow clear
    
        foreach index of local indices{
           tobit theta index, ll(0) ul(1)
           outreg using "C:\stata\results.doc" , `append'
           local append "append"    
        }
    
    }
    

【问题讨论】:

  • 请注意,locals 的名称不同:mysheetsmysheet
  • 另外,你在定义它之前使用'append'(注意'的错误使用;我不知道如何让我在这个使用正确的反引号语境)。而且还不清楚你为什么要首先定义它(至少在这种情况下)。
  • @Brendan 谢谢。修复了它,它仍然无法正常工作。至于追加,我发现如果文件尚未创建,它不会第一次追加,但会追加。
  • 哦,我必须将sheetname 更改为`sheetname' ,它可以工作。

标签: excel foreach stata


【解决方案1】:

只是作为答案发布(所以问题不会出现未回答),因为它似乎是一个简单的编码错误:

  • 确保本地宏名称始终保持一致(mysheetmysheets
  • foreach 循环内对foreach(在本例中为sheetname)的参数使用局部宏语法
  • 如果使用本地宏定义outregappend选项,请在调用该选项之前定义它

    clear all
    set more off
    local mysheets 1996 2000 2003 2007 2008 2010 
    local indices index1 index2 index3
    
    foreach sheetname of local mysheets {
        import excel "C:\stata\Data.xls", sheet(`sheetname') firstrow clear
        foreach index of local indices {
           tobit theta `index', ll(0) ul(1)
           local append "append"    
           outreg using "C:\stata\results.doc" , `append'
        }
    }
    

【讨论】:

  • 我还可以添加 Brendan 以在嵌套的 foreach 循环内的索引宏变量上添加刻度:tobit theta `index', ll(0) ul(1)
  • 谢谢;只是更正了之前确定的项目,但你当然是正确的。
猜你喜欢
  • 1970-01-01
  • 2014-12-11
  • 1970-01-01
  • 1970-01-01
  • 2020-04-05
  • 1970-01-01
  • 2012-07-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多