使用tapply作为子集数据组

时间:2014-01-16 12:48:35

标签: r

我有一组汽车销售数据,我将我的数据分组到不同的组中,如下所示:

汽车品牌和销售年份。

toyota=subset(car, brand=="Toyota")
toyota.yr = cut(toyota$date, "year")
honda=subset(car, brand=="Honda")
honda.yr = cut(honda$date, "year")

所以现在我有6个汽车品牌小组,然后我用tapply来获得每个品牌的销售均值:

tapply(toyota$price, toyota.yr, mean, na.rm=TRUE)

我想对所有6个子组执行此操作,无论如何我可以同时执行此操作而不是键入tapply函数6次?

感谢任何帮助,谢谢!

1 个答案:

答案 0 :(得分:6)

tt=by(car$price, list(car$brand,car$year),mean,na.rm=T); 
print(tt["1986","Toyota"])

如果你想直接在data.frame而不是列表中,Jilber的建议会更好:

aggregate(price ~ brand + year, FUN=mean, data=car, na.rm=T)

如果您希望将其放入矩阵并稍后轻松检索结果,请使用Simon的建议:

tt=tapply( car$price , list( car$brand , car$year ) , FUN = mean , na.rm = TRUE )
print(tt["1986","Toyota"])

使用dput(sample_data)提供可重现的代码。