使用 tapply 并根据两个条件显示结果

Use tapply and show results on two criteria

我想创建一个 table 计算每个城镇的居民按人口普查区收入组和城镇缴纳的州税总额。我用以下数据对此建模。

Town<-c("Andover","Andover","Burlington","Burlington","Burlington","Burlington","Cheshire")
Category<-c("Low","Middle","High","Low","Middle","Middle","Low")
Value<-c(100,350,230,450,100,200,50)
all<-data.frame(Town,Category,Value)

t1<-tapply(all$Value[all$Category=="Low"],all$Town[all$Category=="Low"],sum)
t2<-tapply(all$Value[all$Category=="Middle"],all$Town[all$Category=="Middle"],sum)
t3<-tapply(all$Value[all$Category=="High"],all$Town[all$Category=="High"],sum)
t4<-cbind(t1,t2,t3)

在我的实际数据集中,尽管各个 tapply 文件的长度并不相同。例如,t1 将有 19 个条目,而 t3 将有 55 个。因此我无法 cbind 结果。不幸的是,我无法用建模数据重现这个问题。

无论如何,我如何创建 t4 table 而不必使用 for 循环或多个 tapply 和合并函数?

基本上我想使用像 table

这样的函数
#i.e. 
table(all$Town,all$AMIBand) 

用第三列的总和替换出现次数,在本例中为

all$Value

如果我理解正确的话,你想要这样的东西:

 dcast(all, Town ~ Category, value.var="Value", fun.aggregate=sum)