我想情节foo ~ bar
。但是,我不想查看确切的数据,我宁愿bar
分成分位数,并mean(foo)
为每个分位数绘图(所以我的最终绘图将有 5 个数据点)。这可能吗?
问问题
1750 次
2 回答
6
foo <- rnorm(100)
bar <- rnorm(100)
mn.foo.byQ10bar <- tapply(foo, cut(bar, quantile(bar, (0:5)/5, na.rm=TRUE)), mean)
> mn.foo.byQ5bar
(-3.31,-0.972] (-0.972,-0.343] (-0.343,0.317] (0.317,0.792] (0.792,2.71]
0.13977839 0.03281258 -0.18243804 -0.14242885 -0.01696712
plot(mn.foo.byQ5bar)
这是一个相当标准的任务,Harrell 的 Hmisc 包的cut2
函数有一个很好的 gr= 参数,让您只需为组数指定一个整数即可。我也喜欢它,因为剪切操作的间隔是左闭的,而不是 R 默认的右闭。
于 2013-03-31T18:41:12.073 回答
5
您可以将很多这些行组合成更简洁的代码,但在这里它被分解了
# Sample Data:
x <- 1:100; y <- rnorm(x)
# Number Of Groups
N <- 5
# quantiles
Q.y <- quantile(y, probs=seq(0, 1, length=(N+1)))
Q.x <- quantile(x, probs=seq(0, 1, length=N))
# means of y by quantile
means.y <- c(by(y, cut(y, Q.y), mean))
# plot them
qplot(Q.x, means.y)
于 2013-03-31T18:38:02.523 回答