MiM*_*iMi 38 r frequency histogram
我知道如何绘制直方图或其他频率/百分比相关表.但是现在我想知道,如何在表格中使用这些频率值以便在事后使用.
我有一个庞大的数据集,现在我绘制一个设置binwidth的直方图.我想提取对应于每个binwidth的频率值(即y轴上的值)并将其保存在某处.
有人可以帮我这个吗?谢谢!
rcs*_*rcs 48
该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"
Run Code Online (Sandbox Code Playgroud)
Nic*_*bbe 20
来自?hist:价值
"histogram"类的对象,它是一个包含组件的列表:
breaks并density提供您所需要的一切:
histrv<-hist(x)
histrv$breaks
histrv$density
Run Code Online (Sandbox Code Playgroud)
万一有人打这个问题ggplot的geom_histogram考虑,请注意,有一种方法来从ggplot对象提取数据。
下面的便利函数输出一个数据帧,其中包含每个 bin 的下限 ( xmin)、每个 bin的上限 ( xmax)、每个 bin 的中点 ( x),以及频率值 ( y)。
## Convenience function
get_hist <- function(p) {
d <- ggplot_build(p)$data[[1]]
data.frame(x = d$x, xmin = d$xmin, xmax = d$xmax, y = d$y)
}
# make a dataframe for ggplot
set.seed(1)
x = runif(100, 0, 10)
y = cumsum(x)
df <- data.frame(x = sort(x), y = y)
# make geom_histogram
p <- ggplot(data = df, aes(x = x)) +
geom_histogram(aes(y = cumsum(..count..)), binwidth = 1, boundary = 0,
color = "black", fill = "white")
Run Code Online (Sandbox Code Playgroud)
插图:
hist = get_hist(p)
head(hist$x)
## [1] 0.5 1.5 2.5 3.5 4.5 5.5
head(hist$y)
## [1] 7 13 24 38 52 57
head(hist$xmax)
## [1] 1 2 3 4 5 6
head(hist$xmin)
## [1] 0 1 2 3 4 5
Run Code Online (Sandbox Code Playgroud)
我在这里回答了一个相关的问题(带有 ggplot2 的累积直方图)。