[R] group by in data.frame
Ivan Calandra
ivan.calandra at uni-hamburg.de
Fri Feb 25 16:42:23 CET 2011
Ok, now I think I've understood, but I'm not sure since I think that my
ave() solution does work. Although, I though you have several numerical
variables and 1 factor; it is the opposite but it is still possible:
c3_mean <- ave(x[,3], list(x[,1],x[,2]), FUN=mean) #note that values
are different because of rnorm()
cbind(x[,1:2], c3_mean)
Is it what you want?
Ivan
Le 2/25/2011 16:14, zem a écrit :
> Yeah, you are right
> i want to post an short example what i want to do .. and in the meantime i
> solved the problem ...
> but here is:
> i have something like this dataframe:
> c1<-c(1,2,3,2,2,3,1,2,2,2)
> c2<-c(5,6,7,7,5,7,5,7,6,6)
> c3<-rnorm(10)
> x<-cbind(c1,c2,c3)
>> x
> c1 c2 c3
> [1,] 1 5 0.08279036
> [2,] 2 6 0.59135988
> [3,] 3 7 1.45520468
> [4,] 2 7 -1.70094640
> [5,] 2 5 0.13065228
> [6,] 3 7 -1.12080980
> [7,] 1 5 0.42779354
> [8,] 2 7 -1.53111972
> [9,] 2 6 0.29299987
> [10,] 2 6 -0.01602095
>
> #whith aggregate i receive this:
>> aggregate(x[,3],list(x[,1],x[,2]),mean)
> Group.1 Group.2 x
> 1 1 5 0.2552920
> 2 2 5 0.1306523
> 3 2 6 0.2894463
> 4 2 7 -1.6160331
> 5 3 7 0.1671974
>
>
> and the problem was that i was grouping by 2 columns, so i couldn't copy the
> result to x.
>
> the solution was i made another column with paste(x[,1],x[,2],sep="_")
> and then i used the solution from this link:
> http://tolstoy.newcastle.edu.au/R/help/06/07/30184.html
> so i solved my problem
>
> Ivan, many thanks for your support and quik responses! :)
>
--
Ivan CALANDRA
PhD Student
University of Hamburg
Biozentrum Grindel und Zoologisches Museum
Abt. Säugetiere
Martin-Luther-King-Platz 3
D-20146 Hamburg, GERMANY
+49(0)40 42838 6231
ivan.calandra at uni-hamburg.de
**********
http://www.for771.uni-bonn.de
http://webapp5.rrz.uni-hamburg.de/mammals/eng/1525_8_1.php
More information about the R-help
mailing list