假設每一行都是一個單獨的塊,每個塊的密度將爲V2/sum(V2)
。
爲您的數據
dat <- data.frame(V1 = 1:6, V2 = c(11613, 6517, 2442, 687, 159, 29))
我得到:
> with(dat, V2/sum(V2))
[1] 0.541474332 0.303865342 0.113862079 0.032032452 0.007413624 0.001352170
,我們可以檢查,使用R的工具。一是擴大您的緊湊型頻率表
dat2 <- unlist(apply(dat, 1, function(x) rep(x[1], x[2])))
然後使用hist()
來計算我們想要
dens <- hist(dat2, breaks = c(0:6), plot = FALSE)
看看結果對象的值:
> str(dens)
List of 7
$ breaks : int [1:7] 0 1 2 3 4 5 6
$ counts : int [1:6] 11613 6517 2442 687 159 29
$ intensities: num [1:6] 0.54147 0.30387 0.11386 0.03203 0.00741 ...
$ density : num [1:6] 0.54147 0.30387 0.11386 0.03203 0.00741 ...
$ mids : num [1:6] 0.5 1.5 2.5 3.5 4.5 5.5
$ xname : chr "dat2"
$ equidist : logi TRUE
- attr(*, "class")= chr "histogram"
注意density
組分,它是:
> dens$density
[1] 0.541474332 0.303865342 0.113862079 0.032032452 0.007413624 0.001352170
這與我通過原始頻率表格表示的手邊計算是一致的。
至於繪圖,如果你只是想畫密度,而不是再試試:
dat <- transform(dat, density = V2/sum(V2))
plot(density ~ V1, data = dat, type = "n")
lines(density ~ V1, data = dat, col = "red")
如果要強制軸範圍做:
plot(density ~ V1, data = dat, type = "n", ylim = c(0,1))
lines(density ~ V1, data = dat, col = "red")