correlation by group (was Re: [R] kunamorph@web.de)
Sundar Dorai-Raj
sundar.dorai-raj at pdf.com
Fri Apr 8 18:46:37 CEST 2005
Christfried Kunath wrote on 4/8/2005 10:39 AM:
> Hello,
>
> how can I use the function "cor()" with x and y in function
> "aggregate()" or "by()"?
>
> The data are like this:
> x y group
> 1 4 B
> 2 4 B
> 3 5 C
>
> I would like obtain the correlation between x and y for each subset. I
> don't want to use the workaround with the function subset(), because I
> have many groups.
>
> Thanks in advance.
> Christfried Kunath KC
>
(Please use an informative subject as the posting guide recommends.)
Your example is not very useful, but perhaps you need something like:
tmp <- data.frame(x = rnorm(100), y = rnorm(100),
group = rep(letters[1:5], each = 20))
sapply(split(tmp, tmp["group"]), function(z) cor(z$x, z$y))
# OR
rbind(by(tmp, tmp["group"], function(z) cor(z$x, z$y)))
--sundar
More information about the R-help
mailing list