Notice: On April 23, 2014, Statalist moved from an email list to a forum, based at statalist.org.
From | Rebecca Pope <rebecca.a.pope@gmail.com> |
To | statalist@hsphsun2.harvard.edu |
Subject | Re: st: drop range of variables meeting condition in another variable |
Date | Mon, 18 Mar 2013 21:14:17 -0500 |
Tamer, You have misunderstood Nick's code. You are not meant to replace "varlist" in `r(varlist)' yourself. r(varlist) is a returned value of the program -findname-. When you type -drop `r(varlist)'- after -findname-, Stata will expand that local macro with the names of the variables that met your specified condition, all(@==0). With respect to your question about a 2nd condition, the -findname- help file indicates that you may specify -if- conditions. Therefore: findname gene* if case==1, all(@==0) will find variable names where the no cases have that gene cluster but the cluster may still exist among controls. You can see a test case using data designed to have all 0s for odd-numbered genes among cases only: **begin example ** clear version 12 set obs 100 gen case = _n<=50 forvalues i=1/6 { gen gene`i' = max(0,(-(ceil(`i'/2)-floor(`i'/2))*case)+round(runiform())) } findname gene*, all(@==0) findname gene* if case==1, all(@==0) ** end example ** You'll see the 1st -findname- returns no variable names but the 2nd returns gene1, gene3, and gene5. With 14,000 genes, I assume that you'll have at least some variables that meet your criteria. However, you may want to use -capture drop `r(varlist)'-, just in case -findname- doesn't find any eligible variables. Note also that you must open your single quotations with ` not '. I don't know if your e-mail editor "helpfully" changed that before you posted or if the error exists in your code. Regards, Rebecca * * For searches and help try: * http://www.stata.com/help.cgi?search * http://www.stata.com/support/faqs/resources/statalist-faq/ * http://www.ats.ucla.edu/stat/stata/