来自频率表的R直方图

时间:2014-03-14 00:40:21

标签: r

所以我已经弄清楚如何将数据钻取到频率表 -

        Overall.Cond Freq
235            1    0
236            2    0
237            3    1
238            4    1
239            5    9
240            6    1
241            7    1
242            8    1
243            9    1

我想从中绘制直方图,但是当我做hist(dataFrameName)时,我收到此错误

Error in hist.default(veenker) : 'x' must be numeric

为什么会发生这种情况,我该如何解决这个问题?

4 个答案:

答案 0 :(得分:10)

你真的想要直方图或条形图吗?如果你坚持使用直方图,那么你就缺少最顶层的上边界;我认为它是10。

user2030503提供的解决方案有点浪费,因为它从频率表重新创​​建数据集。由于您已经计算了频率表,因此可以直接在直方图对象的构造中使用它。后者基本上是R的列表。

Overall.Cond <- 1:10
Freq <- c(0,0,1,1,9,1,1,1,1)
myhist <-list(breaks=Overall.Cond, counts=Freq, density=Freq/diff(Overall.Cond),
              xname="Overall Cond")
class(myhist) <- "histogram"
plot(myhist)

当箱宽为1时,在这种情况下可以简化密度的计算;我只是为了一般性而提出这个问题。

答案 1 :(得分:2)

你可以简单地做

myfreq=table(df$columnofinterest)
plot(myfreq)

答案 2 :(得分:1)

重建数据框:

df= as.data.frame(cbind(Overall.Cond= 1:9, Freq= c(0,0,1,1,9,1,1,1,1)))
df

结果:

  Overall.Cond Freq
1            1    0
2            2    0
3            3    1
4            4    1
5            5    9
6            6    1
7            7    1
8            8    1
9            9    1

然后制作一个观察矢量并绘制它:

df.freq= as.vector(rep(df$Overall.Cond, df$Freq))
hist(df.freq)

enter image description here

答案 3 :(得分:0)

我认为它应该是一个条形图,就像这样:

barplot(dt$Freq, names.arg = dt$Overall.Cond)