Bookmark and Share

Notice: On April 23, 2014, Statalist moved from an email list to a forum, based at statalist.org.


[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: st: Transforming data - horizontal to vertical


From   Nick Cox <[email protected]>
To   "[email protected]" <[email protected]>
Subject   Re: st: Transforming data - horizontal to vertical
Date   Wed, 11 May 2011 13:43:34 +0100

-local- is the start of a new command.

If you don't have a variable -gdp-, don't mention it.

r(varlist) must be typed like that; don't change it

Nick

On 11 May 2011, at 12:48, lreine ycenna <[email protected]> wrote:

I tried the command ds gdp year, not local countries `r(gdp)', but
stata tells me option local is not allowed.
am i supposed to create a variable called ' countries'? also, my var
should be gdp?

I have data like this:

year    Afghanistan    Albania           Algeria
1977    275,820,910    ..    1,683,573,383
1978    390,555,036    ..    1,980,500,369
1979    441,210,990    ..    2,658,756,710
1980    371,168,398    ..    3,772,614,849
1981    274,293,425    ..    3,695,345,372

and I need it to be like this:

year    country                     gdp
1977    Afghanistan    2,953,333,419
1978    Afghanistan    3,300,000,108
1979    Afghanistan    3,697,940,345
1980    Afghanistan    3,641,723,447
1981    Afghanistan    3,478,787,910
1977    Albania    ..
1978    Albania    ..
1979    Albania    ..
1980    Albania    ..
1981    Albania    ..



On 11 May 2011 11:11, Nick Cox <[email protected]> wrote:
By the way, you don't have to number them with suffixes 1, 2, etc. As
the country identifiers were valid variable names beforehand, you
could do something like this

ds var year, not
local countries `r(varlist)'

To rename all these variables type

foreach var of local countries {
   rename `var' country`var'
}

The subsequent -reshape- command would need to use the option - string-.

Nick

By the way, there was a small typo in Maarten's solution:

label country `i' "`var'", add

should be

label def country `i' "`var'", add

Nick

On Wed, May 11, 2011 at 10:57 AM, Maarten Buis <[email protected] > wrote:
On Wed, May 11, 2011 at 11:28 AM, lreine ycenna <[email protected] > wrote:

regarding this command you show me, I have over 100 countries which
line up side by side. Is there anyway that I can do this without
renaming them one by one?

I assume that your dataset consists of variables var year and than all
countries. To get a  list of the names of all variables except var
year type:

ds var year, not
local countries `r(varlist)'

To rename all these variables type

local i = 1
foreach var of local countries {
   rename `var' c`i'
  label country `i' "`var'", add
  local i = `i' + 1
}

*
*   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/


© Copyright 1996–2018 StataCorp LLC   |   Terms of use   |   Privacy   |   Contact us   |   Site index