通过分割字符串跟踪已创建了多少个新变量

时间:2018-09-07 20:11:17

标签: stata stata-macros

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

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

State

PA;CA
MA
WA;CA;OR

我使用split State, p(;)

State     State1 State2 State3

PA;CA      PA     CA
MA         MA
WA;CA;OR   WA     CA     OR

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

有没有办法做到这一点?

2 个答案:

答案 0 :(得分:1)

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

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

Stored results

    split stores the following in r():

    Scalars   
      r(nvars)       number of new variables created
      r(varlist)     names of newly created variables

这些可以这样使用:

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)

第二个可能更容易。

答案 1 :(得分:1)

通常,您可以使用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

很显然,split之后不需要在这里这样做。