Notice: On April 23, 2014, Statalist moved from an email list to a forum, based at statalist.org.
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: st: Index
From
A Loumiotis <[email protected]>
To
[email protected]
Subject
Re: st: Index
Date
Thu, 12 Jan 2012 12:34:43 +0200
Hi Pavle,
The code below uses -tuples- written by Nicholas J. Cox and is from SSC.
It's a bit long but I think it does the job. I apologize if some lines
are truncated.
Best,
Antonis
clear all
input firm yr mkt msal
1 1990 1 1
1 1991 1 1
1 1992 2 .3
1 1992 2 .1
1 1992 3 .15
1 1992 2 .15
1 1992 3 .15
1 1992 4 .15
1 1993 4 .40
1 1993 4 .20
1 1993 5 .40
2 1990 1 1
2 1991 1 1
2 1992 2 .3
2 1992 2 .1
2 1992 3 .15
2 1992 2 .15
2 1992 3 .15
2 1992 4 .15
2 1993 4 .40
2 1993 4 .20
2 1993 5 .40
end
gen index=.
sum firm, meanonly
forvalues i=1/`r(max)' {
sum yr, meanonly
forvalues j=`r(min)'/`r(max)' {
preserve
keep if firm==`i' & yr==`j'
if `=_N'==1 local index`i'`j' msal[1]
else {
local index`i'`j'=0
forvalues k=1/`=_N' {
local mo`i'`j' "`mo`i'`j'' `k'"
local m`i'`j'`k'=mkt[`k']
local ms`i'`j'`k'=msal[`k']
}
tuples `mo`i'`j'', max(2)
forvalues l=1/`ntuples' {
if `:list sizeof tuple`l''==2 {
local mtuple`l' "`m`i'`j'`:word 1 of `tuple`l'''' `m`i'`j'`:word
2 of `tuple`l''''"
if "`:list dups mtuple`l''"=="" local
index`i'`j'=`index`i'`j''+2*(`ms`i'`j'`:word 1 of
`tuple`l''''*`ms`i'`j'`:word 2 of `tuple`l'''')
else local index`i'`j'=`index`i'`j''+`ms`i'`j'`:word 1 of
`tuple`l''''*`ms`i'`j'`:word 2 of `tuple`l''''
}
}
}
restore
replace index=`index`i'`j'' if firm==`i' & yr==`j'
}
}
format index %4.2g
list
*
* For searches and help try:
* http://www.stata.com/help.cgi?search
* http://www.stata.com/support/statalist/faq
* http://www.ats.ucla.edu/stat/stata/