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
kunamorph@web.de
2 messages · mailpuls@gmx.net, Sundar Dorai-Raj
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