0
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更改爲聚合以獲得相同的結果嗎?
請問爲什麼?在某種程度上,「tapply」不能爲你工作嗎?一般的解決方案是(如果你想使用'聚合')將首先'聚合',然後'重塑'。例如:'reshape(aggregate(sale〜year + province,dat,sum),direction =「wide」,idvar =「year」,timevar =「province」)',但不知道爲什麼,所以猶豫不決,一個答案。 – A5C1D2H2I1M1N2O1R2T1
另一個選擇是使用'xtabs',結果是你想要的格式:'xtabs(sale〜year + province,data = dat)' –