4

こんにちは私はggplotでヒストグラムを描画しようとしていますが、私のデータにはすべての値がありませんが、値と出現回数があります。

value=c(1,2,3,4,5,6,7,8,9,10)
weight<-c(8976,10857,10770,14075,18075,20757,24770,14556,11235,8042)
df <- data.frame(value,weight)
df
   value weight
1      1   8976
2      2  10857
3      3  10770
4      4  14075
5      5  18075
6      6  20757
7      7  24770
8      8  14556
9      9  11235
10    10   8042

値をビン化する方法、またはビン化された値のヒストグラムをプロットする方法のいずれかを知っている人は誰でもいます。
次のようなものを手に入れたい

    bin  weight
1   1-2   19833
2   3-4   24845
...
4

3 に答える 3

2

データをビニングする方法の 1 つを次に示します。

df$bin <- findInterval(df$value,seq(1,max(df$value),2))
result <- aggregate(df["weight"],df["bin"],sum)
# get your named bins automatically without specifying them individually
result$bin <- tapply(df$value,df$bin,function(x) paste0(x,collapse="-"))

# result
   bin weight
1  1-2  19833
2  3-4  24845
3  5-6  38832
4  7-8  39326
5 9-10  19277

# barplot it (base example since Roman has covered ggplot)
with(result,barplot(weight,names.arg=bin))
于 2012-09-20T12:45:39.747 に答える
2

ビニングを指定する別の変数を追加してから、

df$group <- rep(c("1-2", "3-4", "5-6", "7-8", "9-10"), each = 2)

ggplot を使用して描画します。

ggplot(df, aes(y = weight, x = group)) + stat_summary(fun.y="sum", geom="bar")

ここに画像の説明を入力

于 2012-09-20T12:46:32.770 に答える
0

データを拡張するだけです。

value=c(1,2,3,4,5,6,7,8,9,10)
weight<-c(8976,10857,10770,14075,18075,20757,24770,14556,11235,8042)
dat = rep(value,weight)
# plot result
histres = hist(dat)

また、ヒストグラムデータの詳細が必要な場合は、histresに役立つ可能性のある情報がいくつか含まれています。

于 2012-09-20T12:43:18.103 に答える