ヒストグラムまたは他の頻度/パーセンテージ関連の表を描く方法を知っています。しかし、今、知りたいのですが、テーブルの中でそれらの頻度値を取得して、事後に使用する方法はありますか。
大規模なデータセットがありますが、現在、binwidthを設定したヒストグラムを描画しています。各ビン幅に対応する頻度値(つまり、y軸の値)を抽出し、どこかに保存したいと思います。
誰かがこれを手伝ってくれますか?ありがとうございました!
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"
?hist
から:値
コンポーネントを持つリストであるクラス「ヒストグラム」のオブジェクト:
breaks
およびdensity
は、必要なほぼすべてを提供します。
histrv<-hist(x)
histrv$breaks
histrv$density
誰かがggplot
のgeom_histogram
を念頭に置いてこの質問に答えた場合に備えて、ggplotオブジェクトからデータを抽出する方法があることに注意してください。
次の便利な関数は、各ビンの下限(xmin
)、各ビンの上限(xmax
)、各ビンの中間点(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")
図:
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
私がここで答えた関連する質問( ggplot2の累積ヒストグラム )。