Replace $ in Stata variable labels with \textdollar -
i have variables dollar signs (i.e., $) in variable labels. causes problems downstream in code (i later modify these labels , dollar signs deregister empty global macros). replace these dollar signs latex's \textdollar using stata's subinstr() function.
but can't figure out. possible? or should resign doing more manually? or looking other characters near or around $ in variable labels?
clear set obs 10 generate x = runiform() label variable x "label $mil" generate y = runiform() label variable y "another label $mil" describe foreach v of varlist * { local name : variable label `v' local name `=subinstr("`name'", "$mil", "\textdollar", .)' label variable `v' "`name'" } describe this removes label altogether.
(the problem has changed, why give separate answer.)
having $something in variable label problematic because stata treat macro , therefore dereference it. stata doing in toy example? let's see:
this expected behavior:
. local name = subinstr("some text", " ", "xyz", .) . display "`name'" somexyztext the following, don't know if documented, not expected crucial in understanding:
. local name = subinstr("some text", "", "xyz", .) . display "`name'" . (blank) i put in last line emphasize local name has nothing.
in code stata dereferences $mil nothing (because it's not declared beforehand; it's not meant to, of course). in fact,
label variable x "label $mil" does not hold intend. rather want delay macro substitution \:
label variable x "label \$mil" for other part, when run this
local name `=subinstr("`name'", "$mil", "\textdollar", .)' it evaluates to
local name `=subinstr("`name'", "", "\textdollar", .)' and local name holds nothing. ends story of why code does.
a solution might be:
clear set obs 10 generate x = runiform() label variable x "label \$mil" generate y = runiform() label variable y "another \$mil" describe *----- foreach v of varlist _all { local name : variable label `v' label variable `v' "`=subinstr("`name'\$mil", "\$mil", "\textdollar", .)'" } describe but works if $mil @ end of label text. if in middle somewhere, strategy must used.
all on stata 12.1.
Comments
Post a Comment