gpt4 book ai didi

regex - 导入名称不同月份的文件

转载 作者:行者123 更新时间:2023-12-04 22:40:05 24 4
gpt4 key购买 nike

我有以下代码:

local date "September"

global dir `c(pwd)'
global files "A B C"

foreach x of global files {
import excel "${path}`x'_`date'.xlsx", sheet("1") cellrange(A3:O21) clear
generate Store="`x'"
save `x', replace
}


问题在于,并非我的所有文件都具有日期 September。有些具有 AugustMay

如何在上面的脚本中纳入解决方案?

这个想法是,如果未找到 September,该代码仍将运行。但是,代替 September会使用 August,如果失败,则使用 May

最佳答案

假设以下文件存储在您的工作目录中:

A_September.xlsx
B_August.xlsx
C_May.xlsx


您可以使用宏扩展功能 dir和通配符创建本地
files,它将包含合格文件列表:

local files : dir "`c(pwd)'" files "*_*.xlsx"                               

foreach x of local files {
display "`x'"
}

A_September.xlsx
B_August.xlsx
C_May.xlsx


在Stata的命令提示符下键入 help extended_fcn将为您提供
更多信息。

现在假设您的工作目录中还有两个其他文件:

ASeptember_34.xlsx
C_May45.xlsx


在这种情况下,文件将包含在列表中:

local files : dir "`c(pwd)'" files "*_*.xlsx"                               

foreach x of local files {
display "`x'"
}

A_September.xlsx
ASeptember_34.xlsx
B_August.xlsx
C_May.xlsx
C_May45.xlsx


为了在循环中忽略这些,您需要进一步过滤
使用正则表达式的文件名:

local files : dir "`c(pwd)'" files "*_*.xlsx"                               

foreach x of local files {
if ustrregexm("`x'", "[A-Z]_([A-Z][a-z]+).xlsx") display "`x'"
}

A_September.xlsx
B_August.xlsx
C_May.xlsx


请注意,所需正则表达式的复杂度将取决于
工作目录中包含的文件名的模式。

关于regex - 导入名称不同月份的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48895360/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com