Kit is on the target on the syntax issue, but
I'm not sure how far this is the right
direction for solving Danielle's
underlying problem. Usually in similar
situations I would define "Birth rate" etc.
as variable labels and then just pick
up the variable label. That would avoid
a complicated branching structure and the
whole could boil down to something like
local title `"`:var label `1''"'
which in practice I would normally
extend to
local title `"`:var label `1''"'
if `"`title'"' == "" local title "`1'"
Nick
[email protected]
Christopher F Baum
> On Feb 13, 2004, at 2:33 AM, Danielle wrote:
>
> > Hmm, actually, perhaps I should have been more clear on
> what I am doing
> > here. I am not actually using the values of the variable <aRate> in
> > these statements. The basic idea is I want to run
> essentially the same
> > procedure several times on different variables. There are style-type
> > things I want to change depending on what that variable is
> (i.e. title
> > on graph), so I write conditions to differentiate between
> the relevant
> > variable. So, a snipped version of my program would look like this:
> >
> > program test
> >
> > ...
> >
> > if `1'==aRate {
> > local title = "Abortion rate"
> > }
> >
> > if `1'==bRate {
> > local title = "Birth rate"
> > }
>
> This is not actually an issue of how -if- works; it relates to how
> Stata passes arguments to programs. The first argument to the program
> is passed in local macro 1. If it is a string -- such as a variable
> name -- then you can use the contents of local macro 1, that is, `1',
> in a command where you want that variable name (such as 'summarize'
> below). But if you want to examine the variable name and
> compare it to
> a string, you must treat the contents of local macro 1 as a string,
> that is, "`1'", which can be compared to a string "aRate". If
> the item
> on the right side above is not quoted, it is not the string aRate; it
> is a reference to the first observation of the variable
> aRate. If both
> aRate and bRate happened to have the same first observation,
> the result
> of your program would be unpredictable. A reliable form of this code
> is:
>
> program test
> if "`1'" == "aRate" {
> local title = "Abortion rate"
> }
>
> if "`1'" == "bRate" {
> local title = "Birth rate"
> }
> di "`title'"
> summarize `1'
> end
*
* For searches and help try:
* http://www.stata.com/support/faqs/res/findit.html
* http://www.stata.com/support/statalist/faq
* http://www.ats.ucla.edu/stat/stata/