对于类似*通配符的数字,是否有通配符?

时间:2017-04-05 02:06:04

标签: stata

在Stata中,我可以使用*来表示任何角色。任何数字都有类似的符号吗?例如,我有state_1state_2,...,state 50。我无法使用state_*来表示所有这些变量,因为我有另一个名为state_num的变量。有没有办法做到这一点?

1 个答案:

答案 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