Parsing 使用using语句在Stata程序内拆分或标记化?
我试图用一个程序来加速重复的Stata任务。这是我计划的第一部分:Parsing 使用using语句在Stata程序内拆分或标记化?,parsing,stata,Parsing,Stata,我试图用一个程序来加速重复的Stata任务。这是我计划的第一部分: program alphaoj syntax [varlist] , using(string) occ_level(integer) ind_level(integer) import excel `using', firstrow display "`using'" split "`using'", parse(_) local ye
program alphaoj
syntax [varlist] , using(string) occ_level(integer) ind_level(integer)
import excel `using', firstrow
display "`using'"
split "`using'", parse(_)
local year = `2'
display "`year'"
display `year'
当我运行该程序时,使用行alphaoj,ind_level(4)occ_level(5)使用(“nat4d_2002_dl.xls”)
,我收到错误因子变量和不允许的时间序列运算符r(101)代码>
我不太清楚什么被视为因子或时间序列运算符
我用tokenize替换了split行,用parse(“\”)替换了parse语句,我继续遇到错误。在这种情况下,它表示未找到r(111)代码>
理想情况下,我会让它从文件名中选取一年,并将该年用作本地
我正在努力解决如何执行这项看似简单的任务。返回一个错误,因为split
命令只接受字符串变量。不能将字符串直接传递给它。有关详细信息,请参阅帮助拆分
您可以实现从文件名中提取年份并将其存储为本地宏的目标。见下文:
program alphaoj
syntax [varlist], using(string)
import excel `using', firstrow
gen stringvar = "`using'"
split stringvar, parse(_)
local year = stringvar2
display `year'
end
alphaoj, using("nat4d_2002_dl.xls")
最后一行将“2002”打印到控制台
避免创建额外变量的替代解决方案:
program alphaoj
syntax [varlist], using(string)
import excel `using', firstrow
local year = substr("`using'",7,4)
di `year'
end
alphaoj, using("nat4d_2002_dl.xls")
请注意,此解决方案依赖于所有具有完全相同字符结构的Excel文件。返回错误,因为split
命令仅接受字符串变量。不能将字符串直接传递给它。有关详细信息,请参阅帮助拆分
您可以实现从文件名中提取年份并将其存储为本地宏的目标。见下文:
program alphaoj
syntax [varlist], using(string)
import excel `using', firstrow
gen stringvar = "`using'"
split stringvar, parse(_)
local year = stringvar2
display `year'
end
alphaoj, using("nat4d_2002_dl.xls")
最后一行将“2002”打印到控制台
避免创建额外变量的替代解决方案:
program alphaoj
syntax [varlist], using(string)
import excel `using', firstrow
local year = substr("`using'",7,4)
di `year'
end
alphaoj, using("nat4d_2002_dl.xls")
请注意,此解决方案依赖于具有完全相同字符结构的Excel文件。谢谢!但我不想存储变量。我觉得它效率低下。不过你的答案是有效的——我希望有一个更有效的解决方案。我觉得这也是低效的。可能有更好的方法,但可能它不需要依赖于split
命令。同意-我根本不喜欢split命令,我很乐意听到其他选择。我在我的答案中添加了一个解决方案,使用substr
函数。就是这个,谢谢!!我应该考虑使用子字符串。谢谢!但我不想存储变量。我觉得它效率低下。不过你的答案是有效的——我希望有一个更有效的解决方案。我觉得这也是低效的。可能有更好的方法,但可能它不需要依赖于split
命令。同意-我根本不喜欢split命令,我很乐意听到其他选择。我在我的答案中添加了一个解决方案,使用substr
函数。就是这个,谢谢!!我应该考虑使用子字符串。