0
votes

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

1 Answers

1
votes

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.