[R] reshape with two time variables
Peter Dalgaard
p.dalgaard at biostat.ku.dk
Sat Jan 31 10:48:26 CET 2009
hadley wickham wrote:
> On Fri, Jan 30, 2009 at 5:57 PM, Neil Stewart
> <neil.stewart at warwick.ac.uk> wrote:
>> I have a data frame in wide format that I'd like to convert to long format.
>> For example, in wide format I have:
>>
>> id A1B1 A1B2 A2B1 A2B2
>> 1 1 400 475 420 510
>> 2 2 390 500 470 472
>> 3 3 428 512 555 610
>> 4 4 703 787 801 822
>> 5 5 611 634 721 705
>> 6 6 543 522 612 788
>> 7 7 411 488 506 623
>> 8 8 654 644 711 795
>>
>> A is one repeated-measures variable with levels 1 and 2. B is a second
>> repeated-measures variable also with levels 1 and 2. I'd like to end up
>> with:
>>
>> id A B value
>> 1 1 1 1 400
>> 2 2 1 1 390
>> 3 3 1 1 428
>> 4 4 1 1 703
>> 5 5 1 1 611
>> 6 6 1 1 543
>> 7 7 1 1 411
>> 8 8 1 1 654
>> 9 1 1 2 475
>> 10 2 1 2 500
>> 11 3 1 2 512
>> 12 4 1 2 787
>> 13 5 1 2 634
>> 14 6 1 2 522
>> 15 7 1 2 488
>> 16 8 1 2 644
>> 17 1 2 1 420
>> 18 2 2 1 470
>> 19 3 2 1 555
>> 20 4 2 1 801
>> 21 5 2 1 721
>> 22 6 2 1 612
>> 23 7 2 1 506
>> 24 8 2 1 711
>> 25 1 2 2 510
>> 26 2 2 2 472
>> 27 3 2 2 610
>> 28 4 2 2 822
>> 29 5 2 2 705
>> 30 6 2 2 788
>> 31 7 2 2 623
>> 32 8 2 2 795
>>
>> I've been working with reshape and with the reshape package, but with no
>> success for the two-time-variable case. Can anyone help please?
>
> If you're using melt from the reshape package, once you've melted the
> data, you'll need to do something like:
>
> m$a <- as.numeric(substr(m$variable, 1, 1))
> m$b <- as.numeric(substr(m$variable, 3, 3))
> m$variable <- NULL
Also, things like this should work (here using stock reshape):
> xx <- reshape(x, direction="long", varying=2:5, v.names="val")
> cbind(xx, expand.grid(B=1:2,A=1:2)[xx$time,])
id time val B A
1.1 1 1 400 1 1
2.1 2 1 390 1 1
3.1 3 1 428 1 1
4.1 4 1 703 1 1
5.1 5 1 611 1 1
6.1 6 1 543 1 1
7.1 7 1 411 1 1
8.1 8 1 654 1 1
1.2 1 2 475 2 1
2.2 2 2 500 2 1
3.2 3 2 512 2 1
4.2 4 2 787 2 1
5.2 5 2 634 2 1
...
Once you got your mind wrapped around it, the pattern might be easier to
generalize to more complex within-subject designs.
--
O__ ---- Peter Dalgaard Øster Farimagsgade 5, Entr.B
c/ /'_ --- Dept. of Biostatistics PO Box 2099, 1014 Cph. K
(*) \(*) -- University of Copenhagen Denmark Ph: (+45) 35327918
~~~~~~~~~~ - (p.dalgaard at biostat.ku.dk) FAX: (+45) 35327907
More information about the R-help
mailing list