如何导入特定文件?

三位一体

我正在尝试将import数百个美国县xls档案一起形成Stata中的完整数据集。问题在于,对于每个县,我都有不同年份的多个文件,因此我的文件名列表如下所示:

county1-year1970.xls
county1-year1975.xls
county2-year1960.xls
county2-year1990.xls

对于每个县,我只需要最近一年的文件(各县不同)。

到目前为止,我已经编写了代码来遍历每个可能的文件名,如果文件存在,则将年份存储在本地宏中maxyear

local years = 0
forvalues i = 1/500 {
    forvalues yr = 1900/2018 {
        capture confirm file county`i'-year`yr'.xls
        if _rc == 0 {
            local years `years' `yr'
        }
    }
    /* [code to extract the max value in `years'] */
    import excel county`i'-year`maxyear'.xls, clear
}

该循环似乎有效,但是仍然缺少从本地列表“ years”中提取最大值的代码。我想使用该最大值导入Excel工作表。

如何在本地宏中标识最大值,或者有更简单的方法来获取所需的内容?

尼克·考克斯

当您从最可能的几年到最后一个可能的年份不断循环时,您所需要做的就是跟踪上一个有效年份:

forval i = 1/500 {
    local maxyear  
    forval yr = 1900/2018 {
        capture confirm file county`i'-year`yr'.xls
        if _rc == 0 local maxyear `yr'
    }

    if "`maxyear'" != "" {    
        import excel county`i'-year`maxyear'.xls, clear
    }
}

否则,保留所有有效年份的记录,然后查找这些年份的最大值,这比您需要做的工作还要多。(但是请注意,当您循环访问越来越多的年份时,最大值将只是列表中的最后一项。)

这个答案很接近问题,但是在这种情况下,@ Pearly Spencer的答案是一个更整洁的解决方案。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章