Fabio,
I got this to work with a small fake dataset and 2 variables. The
solution is not very elegant in that it involves looping over firms
and creating many variables for each firm, so it may not work for some
large number of firms that depends on your computer's memory and Stata
flavor.
I hope you will find the logic of this approach useful.
DVM
************************************************************
clear all
set obs 8
input str1 industry listA
A 1
A 2
A 3
B 4
B 5
B 6
C 7
C 8
gen x1=round(uniform()*5,1)
gen x2=round(uniform()*10,1)
replace x1=. in 8
replace x2=. in 7
list
tempfile data
save `data'
levelsof listA, local(listA)
foreach firm in `listA' {
foreach var of varlist x1 x2 {
gen `var'_mod`firm'=cond(listA!=`firm',1,.) * `var'
}
}
collapse (p50) *_mod*, by(industry)
reshape long x1_mod x2_mod, i(industry) j(listA)
merge 1:1 industry listA using `data', keep(match) nogen
************************************************************
*
* 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/