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

# RE: st: Reshaping but not numeric and more a loop needed!

 From Nick Cox To "'statalist@hsphsun2.harvard.edu'" Subject RE: st: Reshaping but not numeric and more a loop needed! Date Mon, 31 Oct 2011 10:40:39 +0000

```Another way to approach this, at least for examples of similar size. The limit is not the number of rows in each table, but the width of the columns. Note that in this and in Scott's solution no loops are needed.

. clear

. input  A       B

A          B
1. 1.11    1.11
2. 1.11    1.12
3. 1.11    1.13
4. 1.11    1.14
5. 1.11    1.15
6. 1.11    1.16
7. 1.11    1.19
8. 1.11    1.26
9. 1.11    1.28
10. 1.11    1.29
11. 1.11    1.63
12. 1.11    1.64
13. 1.20    1.11
14. 1.20    1.12
15. 1.20    1.20
16. 1.20    1.20
17. 1.21    1.13
18. 1.21    1.14
19. 1.21    1.21
20. 1.21    1.22
21. 1.21    1.23
22. end

. gen B2 = string(B, "%3.2f")

. bysort A : replace B2 = B2[_n-1] + " " + B2  if _n > 1

. bysort A : gen tag = _n == _N

. list A B2 if tag , noobs

+--------------------------------------------------------------------+
|    A                                                            B2 |
|--------------------------------------------------------------------|
| 1.11   1.11 1.12 1.13 1.14 1.15 1.16 1.19 1.26 1.28 1.29 1.63 1.64 |
|  1.2                                           1.11 1.12 1.20 1.20 |
| 1.21                                      1.13 1.14 1.21 1.22 1.23 |
+--------------------------------------------------------------------+

Nick
n.j.cox@durham.ac.uk

Scott Merryman

Something like this?

clear
input  A       B
1.11    1.11
1.11    1.12
1.11    1.13
1.11    1.14
1.11    1.15
1.11    1.16
1.11    1.19
1.11    1.26
1.11    1.28
1.11    1.29
1.11    1.63
1.11    1.64
1.20    1.11
1.20    1.12
1.20    1.20
1.20    1.20
1.21    1.13
1.21    1.14
1.21    1.21
1.21    1.22
1.21    1.23
end

bys A: gen tag = _n
egen tag2 = group(A)
reshape wide A B, j(tag) i(tag2)
rename A1 A
drop A? A?? tag2
l

Scott

On Sat, Oct 29, 2011 at 6:29 PM, Miyu Lee <miyu.lee1@googlemail.com> wrote:

> I want to reshape the following table
>
> A           B
> 1.11    1.11
> 1.11    1.12
> 1.11    1.13
> 1.11    1.14
> 1.11    1.15
> 1.11    1.16
> 1.11    1.19
> 1.11    1.26
> 1.11    1.28
> 1.11    1.29
> 1.11    1.63
> 1.11    1.64
> 1.20    1.11
> 1.20    1.12
> 1.20    1.20
> 1.20    1.20
> 1.21    1.13
> 1.21    1.14
> 1.21    1.21
> 1.21    1.22
> 1.21    1.23
> etc     etc
>
> to look like this:
>
> A          B1       B2     B3
> 1.11    1.11     1.12    1.13 etc
> 1.20    1.11     1.12    1.20 etc
> 1.21    1.14 etc.
>
> !!! my ideal would be if STATA just puts the B value next to the B
> value of the first observation within each group, as long as the A
> values are the same.!!!
>
> reshape does not work here because it creates a huge matrix where all
> identical B values are stacked on top of each other and/or there might
> also be a problem that the size of the group is not equal.
>
> any suggestions would be helpful. the matrix is very long so a loop or
> anything similar seems the only alternative.
>

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