我知道如何绘制直方图或其他频率/百分比相关表格。 但是现在我想知道,我怎样才能在表格中获得这些频率值。
我有一个庞大的数据集,现在我绘制一个设置binwidth的直方图。我想提取对应于每个binwidth的频率值(即y轴上的值)并将其保存在某处。
有人可以帮我这个吗? 谢谢!
答案 0 :(得分:44)
hist
函数有一个返回值(类histogram
的对象):
R> res <- hist(rnorm(100))
R> res
$breaks
[1] -4 -3 -2 -1 0 1 2 3 4
$counts
[1] 1 2 17 27 34 16 2 1
$intensities
[1] 0.01 0.02 0.17 0.27 0.34 0.16 0.02 0.01
$density
[1] 0.01 0.02 0.17 0.27 0.34 0.16 0.02 0.01
$mids
[1] -3.5 -2.5 -1.5 -0.5 0.5 1.5 2.5 3.5
$xname
[1] "rnorm(100)"
$equidist
[1] TRUE
attr(,"class")
[1] "histogram"
答案 1 :(得分:20)
来自?hist
:
值
类“histogram”的对象,它是一个包含组件的列表:
breaks
和density
提供您所需的一切:
histrv<-hist(x)
histrv$breaks
histrv$density
答案 2 :(得分:3)
如果有人在考虑ggplot
的{{1}}时遇到此问题,请注意有一种方法可以从ggplot对象中提取数据。
以下便捷函数输出一个数据帧,其中每个bin的上限(geom_histogram
),每个bin的上限(xmin
),每个bin的中间点({{1 }}),以及频率值(xmax
)。
x
插图:
y
我在这里回答的一个相关问题(Cumulative histogram with ggplot2)。