【发布时间】:2023-03-12 03:52:01
【问题描述】:
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"),但不知道为什么,所以犹豫将其发布为答案。 -
另一个选项是使用
xtabs,结果是你想要的格式:xtabs(sale~year+province, data=dat)