Stata 跟踪通过拆分字符串创建了多少新变量

Stata 跟踪通过拆分字符串创建了多少新变量,stata,stata-macros,Stata,Stata Macros,我正在使用split命令拆分一个变量,该变量有多个由分号分隔的字符串。我还想跟踪由于拆分原始字符串变量而创建的新字符串变量的数量,并将其存储在本地宏中 例如,如果我的初始数据如下所示: State PA;CA MA WA;CA;OR 我使用分裂状态,p(;): 我希望能够发现它创建了3新变量,并将该值存储在本地宏中 有办法做到这一点吗?许多Stata命令会留下有用的对象,split也不例外 从帮助文件(您可以通过键入help split)找到: 可以这样使用: clear input st

我正在使用
split
命令拆分一个变量,该变量有多个由分号分隔的字符串。我还想跟踪由于拆分原始字符串变量而创建的新字符串变量的数量,并将其存储在本地宏中

例如,如果我的初始数据如下所示:

State

PA;CA
MA
WA;CA;OR
我使用分裂状态,p(;):

我希望能够发现它创建了
3
新变量,并将该值存储在本地宏中


有办法做到这一点吗?

许多Stata命令会留下有用的对象,
split
也不例外

从帮助文件(您可以通过键入
help split
)找到:

可以这样使用:

clear

input str11 states
"PA;CA"
"MA"
"WA;CA;OR;PA"
end

compress
split states, parse(;) gen(S)

display `: word count `r(varlist)''
display r(nvars)

第二种方法可能更简单。

一般来说,您可以使用
ds
命令:

clear

input str10 State
"PA;CA"
"MA"
"WA;CA;OR"
end

split State, p(;)
drop State

ds State*
State1  State2  State3

return list

macros:
            r(varlist) : "State1 State2 State3"

local states : word count `r(varlist)'
display `states'
3

显然,在<代码>拆分< /代码>之后执行此操作是不必要的。

如果您发现我们的答案有用,请考虑使用上箭头对其进行投票。
clear

input str11 states
"PA;CA"
"MA"
"WA;CA;OR;PA"
end

compress
split states, parse(;) gen(S)

display `: word count `r(varlist)''
display r(nvars)
clear

input str10 State
"PA;CA"
"MA"
"WA;CA;OR"
end

split State, p(;)
drop State

ds State*
State1  State2  State3

return list

macros:
            r(varlist) : "State1 State2 State3"

local states : word count `r(varlist)'
display `states'
3