[R] Collapse data matrix with extra info separated by commas

baptiste auguie ba208 at exeter.ac.uk
Mon Apr 6 17:40:16 CEST 2009


Here's one attempt with plyr, hopefully Hadley will give you a better  
solution ( I could not get cast() to do it either)

test <-  
data 
.frame 
(a=c("A","A","A","A","B","B","B"),b=c(1,1,2,2,1,1,1),c=sample(1:7))
ddply(test,.(a,b),.fun=function(.) paste(.)[3])

   a b         V1
1 A 1    c(2, 4)
2 B 1 c(7, 1, 6)
3 A 2    c(3, 5)

# note that with your example R seems to use some magic
>> test <-
> data.frame(a=c("A","A","A","A","B","B","B"),b=c(1,1,2,2,1,1,1),c=1:7)


   a b  V1
1 A 1 1:2
2 B 1 5:7
3 A 2 3:4

I have no idea how this happens!


HTH,

baptiste



On 6 Apr 2009, at 15:38, Daniel Brewer wrote:

> Hello,
>
> I would like to reshape my data for presentation purposes from  
> something
> like this:
>> test <-
> data.frame(a=c("A","A","A","A","B","B","B"),b=c(1,1,2,2,1,1,1),c=1:7)
>> test
>  a b c
> 1 A 1 1
> 2 A 1 2
> 3 A 2 3
> 4 A 2 4
> 5 B 1 5
> 6 B 1 6
> 7 B 1 7
>
> to something like this:
>  a b c
> 1 A 1 1,2
> 3 A 2 3,4
> 5 B 1 5,6,7
>
> This seems to be the sort of the thing that the reshape library should
> be able to do, but I just can't work out how to do it.
>
> Many thanks
>
> Dan
>
> -- 
> **************************************************************
> Daniel Brewer, Ph.D.
>
> Institute of Cancer Research
> Molecular Carcinogenesis
> Email: daniel.brewer at icr.ac.uk
> **************************************************************
>
> The Institute of Cancer Research: Royal Cancer Hospital, a  
> charitable Company Limited by Guarantee, Registered in England under  
> Company No. 534147 with its Registered Office at 123 Old Brompton  
> Road, London SW7 3RP.
>
> This e-mail message is confidential and for use by the...{{dropped:26}}




More information about the R-help mailing list