I think what you want to do is to use the -levels- command.
. levels firmid if year == 1980
Should get you the macro that you want for 1980.
To handle multiple years you can put a similar levels-based macro into a
foreach loop, something like ...
levels years, local(yearmac)
foreach yrdate of local yearmac {
levels firmid if year == `yrdate', local(flist)
put your testing and replacing code here
}
}
At 11:27 PM 2/25/2005, you wrote:
Sorry for the confusion. Let me explain the situation in more details:
I have a variable called "firmid" and I generate a set of dummy
variables from it. Now I need to use the value of the varialbe
"firmid" to locate the dummy variables and do some calculations but
the location part confuses me. Basically, my data has the following
structure:
firmid year firm_100 firm_101 firm_102 firm_103 firm_104 ......
100 1980
101 1980
105 1980
121 1980
124 1980
101 1981
103 1981
196 1981
The data has been sorted by year and my goal is to check in each year
which firms co-exist with a certain firm - for those coexisting, their
respective dummy variables will be changed to 1 accordingly. For
example, firm 100, 101, 105, 121, 124 coexist in 1980. Therefore, for
the record where firmid=100 and year=1980, variables firm_101,
firm_105 and likewise will be changed to 1. My plan is that for each
year group check the values of "firmid" and then output these values
to a local macro, which can be used to locate the corresponding firm
dummy variables. But, as stated in my firm mail, I was stuck in how to
do this macro set-up in a groupwise environment.
Many thanks!
Robin Luo
On Sat, 26 Feb 2005 00:44:34 +0000, Ada Ma <[email protected]> wrote:
> you can't use -by- for setting locals because you can only have one
value for
> each local value. i can only equals to one thing, it's not like a
variable in
> the dataset which can carry multiple values.
>
> what are you trying to do anyway? if you tell us what you're actually
trying to
> do then may be someone can work out the solution for you.
>
>
> Robin Luo wrote:
>
> > I know that a command like:
> >
> > local i = var[`n']
> >
> > can obtain the nth observation's value into macro i. But my data is a
> > panel data and I want the nth observation within a certain group into
> > the macro i, instead of that of the nth observation in general.
> > Obviously, "local" cannot be used with "by" and I could not figure out
> > a way to do this. If any one has any idea on this, I would really
> > appreciate.
> >
> > Thanks!
> >
> > Robin Luo
>
> *
> * 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/
>
*
* 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/
Fred Wolfe
National Data Bank for Rheumatic Diseases
Wichita, Kansas
Tel (316) 263-2125 Fax (316) 263-0761
[email protected]
*
* 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/