从长字符串创建宏

时间:2019-03-19 19:17:31

标签: stata stata-macros

考虑以下保存在本地宏ABC中的字符串:

A1 A2 B3 C2 B5 A3 C9 C4 B1 A7

如何为每组元素创建一个单独的局部宏(不是变量)?

我还希望将新的本地宏按字母顺序排序。

例如:

A = A1 A2 A3 A7
B = B1 B3 B5 
C = C2 C4 C9

1 个答案:

答案 0 :(得分:3)

以下对我有用:

local ABC A1 A2 B3 C2 B5 A3 C9 C4 B1 A7
local ABC : list sort ABC

tokenize `ABC'

foreach l in A B C {
    forvalues i = 1 / `: word count `ABC'' {
        if strmatch("``i''", "`l'*") local `l' ``l'' ``i''
    }
}

. display "`A'"
A1 A2 A3 A7

. display "`B'"
B1 B3 B5

. display "`C'"
C2 C4 C9