I have a company level data as below and I want to create a new variable that is the average roa for all sectors in the same state excluding the current one, e.g. roa_avg for sector 12 in state 1 equals 0.34513567 which is the average of roa for sectors 25, 36, 37 and 44.
Code:
* Example generated by -dataex-. To install: ssc install dataex clear input byte stateid int(firmid year) byte sector float(roa avg) 1 10010 1987 12 .076647 .034513567 1 10010 1994 12 .0894412 .034513567 1 10010 1990 12 .0190569 .034513567 1 10010 1988 12 .0505933 .034513567 1 10010 1991 12 .0207386 .034513567 1 10010 1992 12 .0387597 .034513567 1 10010 1989 12 .0626254 .034513567 1 10010 1986 12 .1205143 .034513567 1 10010 1993 12 .0966105 .034513567 1 10006 1980 25 .0158416 .04894846 1 10006 1983 25 .0162004 .04894846 1 10006 1977 25 .0128079 .04894846 1 10006 1982 25 .0284683 .04894846 1 10006 1976 25 .0124178 .04894846 1 10006 1975 25 .0145676 .04894846 1 10006 1978 25 .0174595 .04894846 1 10006 1981 25 .0220012 .04894846 1 10006 1979 25 .0166106 .04894846 1 10007 1989 36 .0988984 .03991843 1 10012 2002 37 .0738338 .0395362 1 10012 2000 37 .0391909 .0395362 1 10012 1995 37 .0050087 .0395362 1 10012 2003 37 .0986469 .0395362 1 10012 1988 37 .0664791 .0395362 1 10012 1997 37 .02295 .0395362 1 10012 1991 37 .0143952 .0395362 1 10012 1999 37 .008036 .0395362 1 10012 1998 37 .0302348 .0395362 1 10012 1996 37 .0177345 .0395362 1 10012 1992 37 .0079708 .0395362 1 10012 1993 37 .0124058 .0395362 1 10012 2001 37 .0288672 .0395362 1 10012 1994 37 .0182261 .0395362 1 10012 1990 37 .1175252 .0395362 1 10012 1989 37 .0830875 .0395362 1 10012 1987 37 .1010276 .0395362 1 10015 1983 44 0 .04377445 1 10015 1985 44 0 .04164537 end
I understand that I can use the following code suggested by Clyde Schechter in another post. but it takes a significant time if the number of observations is large.
Code:
isid firmid year gen avg_roa= . forvalues i = 1/`=_N' { // LOOP OVER OBSERVATIONS quietly summ roa if stateid == stateid[`i'] & sector != sector[`i'], detail replace avg_roa= r(mean) in `i' }
0 Response to average at sector level within state (excluding current sector)
Post a Comment