跟踪通过拆分字符串创建了多少个新变量
Track how many new variables have been created by splitting a string
我正在使用 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
新变量并将该值存储在本地宏中。
有办法吗?
许多 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)
第二个可能更容易。
更一般地说,您可以使用 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
之后在这里执行此操作是不必要的。
我正在使用 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
新变量并将该值存储在本地宏中。
有办法吗?
许多 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)
第二个可能更容易。
更一般地说,您可以使用 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
之后在这里执行此操作是不必要的。