0
votes

How can I reshape the dataset below from long to wide in Stata?

a1      a2
NAME    Jane
SEX     female
PHONE   234
SCORE   9
NAME    John
SEX     male
PHONE   444
SCORE   10
NAME    Baba
SEX     male
PHONE   777
SCORE   5

I've tried using gen i = tag(a1) to generate an id. However, this does not uniquely identify each set of repeating data.

1

1 Answers

0
votes

You're correct that you need an identifier, indeed two identifiers. But gen i = tag(a1) is illegal -- presumably you mean egen -- and more to the point is not going to help. egen, tag() depends on identifiers existing already and serves only to create a (0, 1) variable, not what you need here.

This works for me. Please note the use of Stata code to create a data example: there is much more on this at the Stata tag wiki.

clear 
input str6 (a1      a2) 
NAME    Jane
SEX     female
PHONE   234
SCORE   9
NAME    John
SEX     male
PHONE   444
SCORE   10
NAME    Baba
SEX     male
PHONE   777
SCORE   5
end 

drop a1
egen id = seq(), block(4)
egen j = seq(), to(4)
reshape wide a2, i(id) j(j)
rename (a2*) (name sex phone score)
destring, replace 

list 

     +------------------------------------+
     | id   name      sex   phone   score |
     |------------------------------------|
  1. |  1   Jane   female     234       9 |
  2. |  2   John     male     444      10 |
  3. |  3   Baba     male     777       5 |
     +------------------------------------+