在Stata中,我可以使用*
来表示任何角色。任何数字都有类似的符号吗?例如,我有state_1
,state_2
,...,state 50
。我无法使用state_*
来表示所有这些变量,因为我有另一个名为state_num
的变量。有没有办法做到这一点?
答案 0 :(得分:2)
根据您的变量名称考虑以下玩具示例:
clear
set obs 1
forvalues i = 1 / 4 {
generate _state_1`i' = .
}
generate _state_num = .
list, abbreviate(10)
+------------------------------------------------------------+
| _state_11 _state_12 _state_13 _state_14 _state_num |
|------------------------------------------------------------|
1. | . . . . . |
+------------------------------------------------------------+
您可以使用?
代替*
,它可以匹配(任意)单个字符:
list _state_??, abbreviate(10)
+-----------------------------------------------+
| _state_11 _state_12 _state_13 _state_14 |
|-----------------------------------------------|
1. | . . . . |
+-----------------------------------------------+
数字专用替代品通常仅用于 某些命令或功能。
例如,#
命令中使用了rename group
:
rename (*_#) (_#[2]*[1])
list, abbreviate(10)
+------------------------------------------------------------+
| _11_state _12_state _13_state _14_state _state_num |
|------------------------------------------------------------|
1. | . . . . . |
+------------------------------------------------------------+
诸如ustrregexm()
之类的正则表达式函数接受0-9
或\d
:
foreach var of varlist * {
if ustrregexm("`var'", "[a-z_]+[0-9]+") display ustrregexs(0)
}
_state_11
_state_12
_state_13
_state_14