Функция cast()
отлично подходит для расчета полей для совокупных значений:
cast(df, IDx1+IDx2~IDy1, margins=c('IDx1','IDx2','grand_row'),c(min, mean, max))
Проблема в том, что мне нужно взвесить свои средства, используя второй вектор и пользовательскую функцию.
Конечно, ddply()
позволяет мне применять пользовательские функции агрегирования к моим сгруппированным записям:
ddply(d, IDx1+IDx2~IDy1 , function(x)
c(
min(x$value),
MyFancyWeightedHarmonicMeanFunction(x$value,x$weight),
max(x$value)
)
)
... и это потрясающе.
Но что действительно спасло бы день, так это возможность делать обе вещи одновременно, вызывая двухвекторную функцию в cast()
или подделывая каким-либо образом переменную margins=()
в ddply().
Возможно ли это?