Для вашего effect1
код прост, используя dplyr
library(dplyr)
df <- data.frame(
Z = c("aaa", "aaa","bbb","bbb","ccc","ccc"),
X = c(1,1,2,2,3,3),
Y = c(10,10,20,20,30,30))
df %>%
group_by(Z) %>%
summarise(sumX = sum(X),
sumY = sum(Y))
Не ясно, что вы хотите вычислить в effect2