Is there a "more efficient/elegant" way to obtain the result "z" below.

a <- c('pink','pink','blue','blue','gold','gold')
b <- c(5,8,9,12,7,4)
agg <- aggregate(x=b,by=list(a), FUN='mean')
m <- match(a, agg[,1])
z <- agg[m,2]
z



      
	[[alternative HTML version deleted]]

