0

Say I have a data set of country GDPs formatted like this:

--------------------------------- | Year | Country A | Country B | | 1990 | 128 | 243 | | 1991 | 130 | 212 | | 1992 | 187 | 207 |

How would I use Stata's reshape command to change this into a long table with country-year rows, like the following?

---------------------- | Country| Year | GDP | | A | 1990 | 128 | | A | 1991 | 130 | | A | 1992 | 187 | | B | 1990 | 243 | | B | 1991 | 212 | | B | 1992 | 207 |

1 Answer 1

1

It is recommended that you try to solve the problem on your own first. Although you might have tried, you show no sign that you did. For future questions, please post the code you attempted, and why it didn't work for you.

The following gives what you ask for:

clear all
set more off

input ///
 Year  CountryA  CountryB  
 1990  128  243  
 1991  130  212  
 1992  187  207 
end

list

reshape long Country, i(Year) j(country) string
rename Country GDP

order country Year GDP
sort country Year
list, sep(0)

Note: you need the string option here because your stub suffixes are strings (i.e. "A" and "B"). See help reshape for the details.

1
  • Thanks! I just figured this out for myself. I was missing the `string' bit :)
    – Tom
    Commented Feb 28, 2014 at 4:39

Not the answer you're looking for? Browse other questions tagged or ask your own question.