Рекомендую изучить документацию к пакету data.table там есть агрегация по группам и прочие преобразования, особое внимание обратите на функции dcast, merge , :=
как обычно в R фильтрация наблюдений происходит внутри квадратных скобок
data[field1>42,]
Пример добавление агрегирующих полей
data[,':='(sum=sum(money), avg=mean(money)), by=c('shop', 'date')]