Notice: On April 23, 2014, Statalist moved from an email list to a forum, based at statalist.org.
From | Fabio Zona <fabio.zona@unibocconi.it> |
To | statalist@hsphsun2.harvard.edu |
Subject | Re: st: replacing with mean |
Date | Thu, 2 Dec 2010 21:46:04 +0100 (CET) |
Dimitriy! Thank you soo much!! It works perfectly now! I thought it would be a general command for all variables; now I understand that I need to run the command for every variable forwhich I want to calculate the median, but this is perfectly manageable! So your command is correct and works perfectly! Again, thank you very very much! Fabio ----- Messaggio originale ----- Da: "Dimitriy V. Masterov" <dvmaster@gmail.com> A: statalist@hsphsun2.harvard.edu Inviato: Giovedì, 2 dicembre 2010 21:25:51 GMT +01:00 Amsterdam/Berlino/Berna/Roma/Stoccolma/Vienna Oggetto: Re: st: replacing with mean Fabio, Since you have your own data, you should use: levelsof listA, local(listA) foreach var of varlist Var* { qui gen `var'_med=. foreach firm in `listA' { qui gen inc=cond(listA != `firm',1,.) qui egen med=median(`var'*inc), by(industry) qui replace `var'_med=med if listA==`firm' qui drop med inc } } This code assumes that you have data that looks like this: industry listA Var1 Var2 Var3 A 1 0 1 1 A 2 0 1 1 A 3 1 1 1 A 4 1 0 0 A 5 1 0 0 A 6 1 0 2 A 7 1 1 2 A 8 0 0 2 A 9 1 1 1 I was trying to use the variable names from your original e-mail as much as I could. If your variables have different names (including capitalization: Var1 is not the same as var1), you many need to modify my code to reflect that. DVM On Thu, Dec 2, 2010 at 3:12 PM, Fabio Zona <fabio.zona@unibocconi.it> wrote: > Hi Dimitry, that's great! Thank you very much! > > I tried to implement your command; however, I get an error as it says: > > > variable Var* not found > r(111); > > > Might it depend on the fact that I start your procedure from here: > > levelsof listA, local(listA) > > as I already have my dataset ready for calculation)? > > F > > > > > ----- Messaggio originale ----- > Da: "Dimitriy V. Masterov" <dvmaster@gmail.com> > A: statalist@hsphsun2.harvard.edu > Inviato: Giovedì, 2 dicembre 2010 20:41:50 GMT +01:00 Amsterdam/Berlino/Berna/Roma/Stoccolma/Vienna > Oggetto: Re: st: replacing with mean > > Fabio, > > Nick's suggestion can be implemented in the 2nd loop below: > > ************************************************************ > clear all > set more off > > /* Fake Data */ > set obs 26 > > gen str1 industry="" > > local c=1 > foreach l in `c(ALPHA)' { > replace industry = "`l'" in `c' > local ++c > } > > expand 27 > > sort industry > > forvalues v=1/20 { > gen Var`v'=round(uniform()*`v',1) > } > > gen listA=_n > > > /* Actual Loop */ > levelsof listA, local(listA) > > foreach var of varlist Var* { > qui gen `var'_med=. > > foreach firm in `listA' { > qui gen inc=cond(listA != `firm',1,.) > qui egen med=median(`var'*inc), by(industry) > qui replace `var'_med=med if listA==`firm' > qui drop med inc > } > > } > ************************************************************** > * > * 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/ > > * > * 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/ > * * 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/ * * 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/