R 如何将平均值线添加到因子的绘图中?
我对文档和系数的R 如何将平均值线添加到因子的绘图中?,r,bar-chart,mean,R,Bar Chart,Mean,我对文档和系数的plot()的返回值有问题。我想在绘图中添加一条带平均值的水平线,但我无法计算它。我希望能够利用这个情节的价值,但我失败了。例如: > x<-sample(5, 10, replace=TRUE) > x [1] 3 5 1 4 5 4 2 4 1 5 > y<-plot(factor(x)) > y [,1] [1,] 0.7 [2,] 1.9 [3,] 3.1 [4,] 4.3 [5,] 5.5 >x [1] 3 5
plot()
的返回值有问题。我想在绘图中添加一条带平均值的水平线,但我无法计算它。我希望能够利用这个情节的价值,但我失败了。例如:
> x<-sample(5, 10, replace=TRUE)
> x
[1] 3 5 1 4 5 4 2 4 1 5
> y<-plot(factor(x))
> y
[,1]
[1,] 0.7
[2,] 1.9
[3,] 3.1
[4,] 4.3
[5,] 5.5
>x
[1] 3 5 1 4 5 4 2 4 1 5
>y y
[,1]
[1,] 0.7
[2,] 1.9
[3,] 3.1
[4,] 4.3
[5,] 5.5
很明显,域和范围都是整数,那么这个由plot返回的数字到底意味着什么,我如何才能得到平均的条高呢
当然(如果没有更优雅的解决方案),我可以迭代因子级别,计算每个元素的项数,然后取它们的平均值。此外,如果您使用
hist()
而不是plot()
,那么解决方案非常简单:abline(h=mean(hist(x)$counts))
添加一条水平线,只需说:
abline(h = mean(x))
abline(h=任意值)为您提供一条水平线。abline(y=任何东西)给你一条垂直线。我发明的(最复杂的)解决方案可能是:
abline(h=mean(unlist(lapply(min(x):max(x), function(ff) length(which(x == ff))))))
当然,只有当x
是一个因子且级别是数字时,此解决方案才有效;否则,将min(x):max(x)
替换为levels(x)
(对我来说更难理解)一个更简单的解决方案似乎是(来自@Marco Sandri):
@马可·桑德里:你试过了吗?我觉得这是错误的。我不想要
x
的平均值,而是平均条高。这个命令在平均条高abline(h=长度(x)/长度(y))处绘制一条水平线。
@Marco Sandi:所以平均值不依赖于x
的值,而只依赖于条数?你能解释一下背后的数学吗?我还认为,建议的解决方案应该在“答案”部分提出……在您过去写的评论中,您希望在“平均栏高度”处画一条线。我的解决方案正是你所要求的。你忽略了一点,即条形图的高度不是x
的值,而是x
特定值的出现次数,这意味着我不会绘制x
,而是因子(x)
。对于给定的示例,平均值(x)
等于3.4
,很明显,它不可能是平均酒吧高度,因为所有酒吧都低于这个。
abline(h=length(x)/length(y))