为宏指定一系列值

时间:2014-11-04 15:54:23

标签: stata stata-macros

我正在尝试使用for循环重命名变量列表。

我的代码如下所示:

local x 99 00 01 02 03 04 05 06 07 08 09 10 11 12
local k  2 4 6 8 10 12 14 16 18 20 22 24 26 28
local n: word count `x'

forvalues i = 1 / `n' {
    local a : word `i' of `x'
    local b : word `i' of `k'
    rename v`b' num`a'
}

我想知道是否可以在不手动编写宏的情况下为宏k分配范围。请注意,两个值之间的差值不是一。

1 个答案:

答案 0 :(得分:2)

在您的情况下,您只需要原始后缀2(2)28,因此加倍1(1)14就足够了。否则help tokenize

local x 99 00 01 02 03 04 05 06 07 08 09 10 11 12
tokenize "`x'"
local n: word count `x'
forvalues i = 1/`n' {
    local I = 2 * `i' 
    rename v`I' num``i'' 
}

其他算术进展也很简单。例如,3(2)...是

    local I = 2 * `i' + 1