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)' –