Я не совсем уверен, что это то, что вы ищете.
Поскольку Wind
является непрерывным, если мы хотим сгруппировать его, нам придется как-то его дискретизировать.Я решил сделать это, сгруппировав Wind
по квантилю, или, точнее, по децилям.Затем я вычислил среднее значение Ozone
, сгруппированное по этим Wind
квантилям.
data(airquality)
br <- quantile(airquality$Wind, seq(0, 1, length=11))
mid <- br[-length(br)] + diff(br)/2
wind.bin <- cut(airquality$Wind, breaks=br)
agg.oz <- aggregate(airquality$Ozone, list(wind.bin), mean, na.rm=TRUE)
colnames(agg.oz) <- c("Wind.mean", "Ozone.mean")
agg.oz[1] <- mid
plot(Ozone ~ Wind, data=airquality, pch=16, cex=0.6)
abline(v=br, col="#00000022", lty=2)
lines(agg.oz, col="red", type="o", pch=16)
legend("topright", legend="Mean ozone by \nwind quantile",
col="red", lwd=1.1, bty="n", cex=0.8)
![enter image description here](https://i.stack.imgur.com/wCHZm.png)
Если вы настаиваете на лечении Wind
в качестве дискретных значений вы можете сделать это следующим образом
data(airquality)
airquality <- airquality[complete.cases(airquality),]
agg.oz <- aggregate(Ozone ~ Wind, data=airquality, mean, na.rm=TRUE)
colnames(agg.oz) <- c("Wind.mean", "Ozone.mean")
plot(Ozone ~ Wind, data=airquality, pch=16, cex=0.6)
lines(agg.oz, col="red", type="o", pch=16)
![enter image description here](https://i.stack.imgur.com/OXldN.png)