Я думаю, что следовал тому, что вы хотели. Дайте мне знать, если это то, что вы имели в виду.
Сначала составьте некоторые данные:
movies <- data.frame(mov = c("Foo", rep(c("Foo", "Bar", "Baz"),3))
, price = c(7, rep(c(7, 5, 2),3))
, wknumb = c(1, rep(1:3, each = 3))
, buys = sample(10:20, 10, TRUE))
mov price wknumb buys
1 Foo 7 1 12
2 Foo 7 1 11
3 Bar 5 1 10
4 Baz 2 1 19
5 Foo 7 2 10
6 Bar 5 2 15
7 Baz 2 2 15
8 Foo 7 3 14
9 Bar 5 3 15
10 Baz 2 3 20
У нас есть две записи для фильма "Foo" и недели 1, которые нам нужно свернуть в одну запись. Для этого мы можем использовать пакет plyr
:
library(plyr)
ddply(movies, c("mov", "wknumb"), summarize, totbuys = sum(buys))
Возвращает data.frame с 9 строками, по одной на каждый фильм и неделю:
mov wknumb totbuys
1 Bar 1 10
2 Bar 2 15
3 Bar 3 15
4 Baz 1 19
5 Baz 2 15
6 Baz 3 20
7 Foo 1 23
8 Foo 2 10
9 Foo 3 14