Notice: On April 23, 2014, Statalist moved from an email list to a forum, based at statalist.org.
From | Richard Murphy <r1ch4rd.murphy@gmail.com> |
To | statalist@hsphsun2.harvard.edu |
Subject | Re: st: Reshape with prefix using a varlist |
Date | Tue, 15 Mar 2011 14:21:01 -0700 |
Thanks you guys, I think that trick is very helpful. Best Richard On 15 March 2011 01:58, Nick Cox <njcoxstata@gmail.com> wrote: > Rebecca is correct. > > Another way to do it, without a loop: > > unab myvars : country1-country244 > local myvars : subinstr local myvars " " " @", all > > That fixes every variable name except the first, which lacks a > preceding "@", but you can just supply that directly to -reshape-: > > reshape ... @`vars', ... > > Nick > > On Tue, Mar 15, 2011 at 2:29 AM, Rebecca Pope <rebecca.a.pope@gmail.com> wrote: >> Richard, >> I know you've gotten what you need to accomplish the task at hand, but >> I'd like to address your original question, in case you may find this >> trick useful at a later date... >> >> If you want a series of the form @var1 @var2 etc, you can always make >> Stata write the bulk of the command for you. I've used variants of >> this for all sorts of purposes (e.g. sticking "i." or "c." in front of >> a list of variables). >> >> /*use this if all countries are countryi*/ >> local vars "" >> forvalues i=1/244 { >> local vars "`vars' @country`i'" >> } >> >> /*use this if you have names that vary from the countryi naming convention*/ >> unab varlist: country1 - country244 >> local vars "" >> foreach var of local varlist { >> local vars "`vars' @`var' " >> } >> >> Then you could submit, using your example, -reshape wide `vars', >> i(inst year) j(LEVEL) string-. >> Hope this helps, >> Rebecca >> >> On Mon, Mar 14, 2011 at 8:51 PM, Richard Murphy >> <r1ch4rd.murphy@gmail.com> wrote: >>> >>> That's a very good point, I hadn't considered going in the other >>> direction (even longer) and then collapsing when need be. >>> Thanks for this, I think i will give this a try. >>> >>> Best >>> Richard >>> >>> >>> On 14 March 2011 18:35, Nick Cox <njcoxstata@gmail.com> wrote: >>> > I think I would make this even -long-er if it were mine. >>> > >>> > reshape long country , i(year inst LEVEL) >>> > >>> > Then whatever reductions you want would be -egen- or -collapse- or -contract-. >>> > >>> > Why do I suggest this? You are already imagining that you need to >>> > combine a loop over variables with totals over observations. Think how >>> > much more of that you would need with yet more variables. >>> > >>> > Nick >>> > >>> > On Tue, Mar 15, 2011 at 1:21 AM, Richard Murphy >>> > <r1ch4rd.murphy@gmail.com> wrote: >>> >> The label "country1-country244" represents the remaining 244 >>> >> variables, containing the total amount of students from that country >>> >> at that level in a uni-year. >>> >> Are you suggesting something along the lines of >>> >> foreach x in varlist eu uk { >>> >> >>> >> >>> >> On 14 March 2011 18:02, Nick Cox <njcoxstata@gmail.com> wrote: >>> >>> Thanks. That clarifies some things but not others. In your example, >>> >>> you have 7 headings but 6 columns of data. What is >>> >>> "country1-country244"? A variable label? >>> >>> >>> >>> The totals for groups are easily computable using -egen, total()- with >>> >>> your present structure. >>> >>> >>> >>> On Tue, Mar 15, 2011 at 12:45 AM, Richard Murphy >>> >>> <r1ch4rd.murphy@gmail.com> wrote: >>> >>>> Hi Nick , >>> >>>> I appreciate that it looks foolish making a wide dataset even wider, >>> >>>> but I don't think its that bad in this case. >>> >>>> I have university by degree level by year data. For each of these i >>> >>>> have the number of students coming from 244 different countries, along >>> >>>> with total EU and total OS. >>> >>>> >>> >>>> year instit LEVEL os uk eu country1-country244 >>> >>>> 1994 1 ug 12 146 0 >>> >>>> 1994 1 pgr 3 335 3 >>> >>>> 1994 1 pgt 1 101 0 >>> >>>> 1995 1 ug 7 119 0 >>> >>>> 1995 1 pgr 4 300 9 >>> >>>> 1995 1 pgt 6 59 17 >>> >>>> >>> >>>> There are 3 levels of degree, which i would like to make wide. So that >>> >>>> I would have a panel dataset for universities over time. The reason >>> >>>> why i want to do this is that I want to calculate the cross >>> >>>> subsidisation that occurs between the degree levels, and for this I >>> >>>> need the totals for each within an observation. >>> >>>> >>> >>>> I need to do this for all the countries as i'm using a Card >>> >>>> Shift-Share approach as an instrument for changes in overseas numbers, >>> >>>> which i would like to define in various different ways throughout the >>> >>>> analysis (EU, NonEU, Asia, ect). >>> >>>> >>> >>>> And i would like the prefix, so that the variable names fit into my >>> >>>> pre existing do files for the analysis. >>> >>>> >>> >>>> Best regards >>> >>>> Richard >>> >>>> >>> >>>> >>> >>>> On 14 March 2011 17:24, Nick Cox <njcoxstata@gmail.com> wrote: >>> >>>>> Please tell us directly more about your dataset and why you think >>> >>>>> -reshape wide- is a good idea. From what you say it just make most >>> >>>>> analyses more difficult. Also, how many variables will you end up >>> >>>>> with? >>> >>>>> >>> >>>>> Nick >>> >>>>> >>> >>>>> On Tue, Mar 15, 2011 at 12:13 AM, Richard Murphy >>> >>>>> <r1ch4rd.murphy@gmail.com> wrote: >>> >>>>>> Hi all, >>> >>>>>> I want to reshape long data to wide, putting the 'j' string variable >>> >>>>>> at the begging of the stub. >>> >>>>>> This would be fine if I have a limited number of variables as i can >>> >>>>>> just use the @ function. >>> >>>>>> reshape wide @var1 @var2 @var3 @var4, i(instit year) j(LEVEL) string >>> >>>>>> >>> >>>>>> But this does not work if i use the variable list functionality of >>> >>>>>> reshape. I would like to know if their is an easier way of doing this, >>> >>>>>> rather than typing in all 244 variables preceded by @. >>> >>>>>> reshape wide @var1-@var244, i(instit year) j(LEVEL) string > > * > * 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/