R 对数据子集组使用tapply

R 对数据子集组使用tapply,r,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, toyot

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

汽车品牌和销售年度

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次

谢谢你的帮助,谢谢

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的建议放入矩阵中,并在以后轻松检索结果,请使用Simon的建议:

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

使用
dput(样本数据)
给出可复制的代码

也许
aggregate(price~brand+year,FUN=mean,data=car)
,这只是一个猜测,你会得到更好的答案。你可以简单地做这个
tapply(car$price,list(car$brand,car$year),FUN=mean,na.rm=TRUE)
谢谢@SimonO'Hanlon,我可以问一个后续问题吗:我如何绘制结果?我使用了最简单的函数plot(),但它给出了一种3x3矩阵图。我想画一幅图,y轴作为价格,x轴作为年份,因此图上的点是不同颜色的汽车品牌。谢谢
taply
by
基本相同。回答得好+1.
dplyr
style:
q4totalnetassets%%>%filter(Country!=“TOTAL”)%%>%group_by(Currency)%%>%Summary(Sum=Sum(Value))