dat=data.frame(
year=c(rep(2007,5),rep(2008,3),rep(2009,3)),
province=c("a","a","b","c","d","a","c","d","b","c","d"),
sale=1:11)
tapply(dat$sale,list(dat$year,dat$province),sum)
a b c d
2007 3 3 4 5
2008 6 NA 7 8
2009 NA 9 10 11
В этом случае, как я могу преобразовать tapply в агрегат, чтобы получить тот же результат?
tapply
не работает для вас так, как вы ожидали? Общее решение было бы (если вы хотите использоватьaggregate
) было бы сначалаaggregate
, а затемreshape
. Что-то вроде:reshape(aggregate(sale ~ year + province, dat, sum), direction = "wide", idvar="year", timevar="province")
, но не знаю почему, поэтому не решаюсь опубликовать это как ответ. - person A5C1D2H2I1M1N2O1R2T1   schedule 04.11.2013xtabs
, результат будет в нужном вам формате:xtabs(sale~year+province, data=dat)
- person Jilber Urbina   schedule 04.11.2013