eta2 <- function(x,y){ my <- by(y,x,mean) ny <- by(y,x,length) sm <-sum( (my - mean(y))^2*ny )/length(y) sm/mean((y-mean(y))^2) }