1

マクロがあるとします

global LabNames "3M"  "ABBOTT"  "MERCK SHARP DOHME"

単語が正しくグループ化されるように引用符を使用しています (MERCK SHARP DOHME は 1 つの会社であり、3 つの異なる会社ではありません)。変数を調べて、LabNames の文字列の 1 つを部分文字列として持つときにそれを置き換えるプログラムを作成しようとしています。

正常に動作するコードの部分から始めましょう。

foreach company of global LabNames {
     display "`company'"
}

私の場合、このコードは必要に応じて処理されます - 3 つの異なる会社 (5 ではありません) をリストします。ただし、次のコードは正しく実行されません。3Mで壊れます。

gen hasLab = 0

foreach company of global LabNames {
     display "`company'"
     replace hasLab = (index(lab,`"`company'"'))
     replace lab = `"`company'"' if hasLab > 0 
}

このコードを適用すると

    lab
    asdf 3M
    3M
    ABBOTT
    ABBOTT asdf
    MERCK SHARP DOHME AS
    MERCK SHARP DOHME 4

我々が得る

    lab
    3M
    asdf 3M
    ABBOTT
    ABBOTT
    MERCK SHARP DOHME
    MERCK SHARP DOHME

コードが 3M のケースを正しく処理できるようにするにはどうすればよいか分かりますか?

4

1 に答える 1

1

グローバルに不要な引用符があります。めちゃくちゃになっています。見る

. global LabNames "3M" "ABBOTT" "MERCK SHARP DOHME"
. mac list LabNames
LabNames:       3M" "ABBOTT" "MERCK SHARP DOHME

入力するだけです

global LabNames 3M ABBOTT "MERCK SHARP DOHME" 

help macrolistsヒントについては、を参照してください。

于 2012-06-28T02:28:32.400 に答える