使用 using 语句在 Stata 程序中拆分或标记化?
Split or tokenize within Stata program with using statement?
我正在尝试使用一个程序来加速重复性 Stata 任务。这是我的程序的第一部分:
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) using("nat4d_2002_dl.xls")
,我收到错误 factor-variable and time-series operators not allowed r(101);
我不太确定什么被视为因子或时间序列运算符。
我已经用 tokenize 替换了分割线,用 parse("_") 替换了 parse 语句,我继续 运行 出错。在那种情况下,它说 _ not found r(111);
理想情况下,我会从文件名中获取年份并将该年份用作本地年份。
我正在纠结如何执行这个看似简单的任务。
返回错误,因为split
命令只接受字符串变量。您不能将字符串直接传递给它。有关详细信息,请参阅 help 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 个具有完全相同字符结构的文件。
我正在尝试使用一个程序来加速重复性 Stata 任务。这是我的程序的第一部分:
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) using("nat4d_2002_dl.xls")
,我收到错误 factor-variable and time-series operators not allowed r(101);
我不太确定什么被视为因子或时间序列运算符。
我已经用 tokenize 替换了分割线,用 parse("_") 替换了 parse 语句,我继续 运行 出错。在那种情况下,它说 _ not found r(111);
理想情况下,我会从文件名中获取年份并将该年份用作本地年份。
我正在纠结如何执行这个看似简单的任务。
返回错误,因为split
命令只接受字符串变量。您不能将字符串直接传递给它。有关详细信息,请参阅 help 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 个具有完全相同字符结构的文件。