[R] Simple use of dcast (reshape2 package)
D. Rizopoulos
d.rizopoulos at erasmusmc.nl
Tue Jan 22 10:40:11 CET 2013
you could try the following:
DF <- read.table(textConnection("
Target Eaten ID
50 TPP 0 1
51 TPP 1 2
52 TPP 3 3
53 TPP 1 4
54 TPP 2 5
50.1 GPA 9 1
51.1 GPA 11 2
52.1 GPA 8 3
53.1 GPA 8 4
54.1 GPA 10 5"), header = TRUE)
newDF <- as.data.frame(with(DF, tapply(Eaten, list(ID, Target), c)))
newDF$ID <- unique(DF$ID)
newDF
I hope it helps.
Best,
Dimitris
On 1/22/2013 10:23 AM, Patrick Connolly wrote:
> Suppose I have a small dataframe
>
>> aa
> Target Eaten ID
> 50 TPP 0 1
> 51 TPP 1 2
> 52 TPP 3 3
> 53 TPP 1 4
> 54 TPP 2 5
> 50.1 GPA 9 1
> 51.1 GPA 11 2
> 52.1 GPA 8 3
> 53.1 GPA 8 4
> 54.1 GPA 10 5
>
> And I want to reshape it into
>
> ID TPP GPA
> 1 1 0 9
> 2 2 1 11
> 3 3 3 8
> 4 4 1 8
> 5 5 2 10
>
> I realise that dcast function in the reshape2 package can handle much
> more complicated tasks than that, but I can't make it do a simple one.
>
> If I simply tried
>
>> dcast(aa, ... ~ Target)
> Using ID as value column: use value.var to override.
> Aggregation function missing: defaulting to length
> Eaten GPA TPP
> 1 0 0 1
> 2 1 0 2
> 3 2 0 1
> 4 3 0 1
> 5 8 2 0
> 6 9 1 0
> 7 10 1 0
> 8 11 1 0
>
> As per the help file, it's giving counts of the numbers in the Eaten
> column since that's the default fun.aggregate value.
>
> My questions are: what fun.aggregate would work? Alternatively, can
> value.var be set to something useful?
>
> TIA
>
--
Dimitris Rizopoulos
Assistant Professor
Department of Biostatistics
Erasmus University Medical Center
Address: PO Box 2040, 3000 CA Rotterdam, the Netherlands
Tel: +31/(0)10/7043478
Fax: +31/(0)10/7043014
Web: http://www.erasmusmc.nl/biostatistiek/
More information about the R-help
mailing list