dat <- data.frame(s=c(1,1,1,1,2,2,2,2,3,3,3,3),
c1=c("w","x","y","z","w","x","y","z","w","x","y","z"),
c2=c("m","m","m","m","f","f","f","f","m","m","m","m"),
c3=c(1,2,3,4,5,6,7,8,9,10,11,12))
> dat
s c1 c2 c3
1 1 w m 1
2 1 x m 2
3 1 y m 3
4 1 z m 4
5 2 w f 5
6 2 x f 6
7 2 y f 7
8 2 z f 8
9 3 w m 9
10 3 x m 10
11 3 y m 11
12 3 z m 12
Я хотел бы рассчитать разницу между значениями c3
для каждой комбинации c1
(wx, xy и т. Д.) И для каждой s
.Вывод может выглядеть следующим образом
s diff c2 c3
1 w-x m -1
1 w-y m -2
1 w-z m -3
1 x-y m -1
etc
Я думал, что функция aggregate
должна работать, но я не знаю, как определить комбинации и передать их в аргумент функции.