使用tapply并在两个条件上显示结果

时间:2016-03-08 19:00:43

标签: r apply tapply

我想创建一个表格,其中包括居民每个城镇由人口普查区块收入组和城镇提供的州税额之和。我使用以下数据对此进行建模。

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个。因此我无法查看结果。不幸的是,我无法使用建模数据重新创建此问题。

无论如何,如何在不使用for循环或多个tapply和merge函数的情况下创建t4表?

基本上我想使用像表

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

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

all$Value

1 个答案:

答案 0 :(得分:1)

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

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