所以我已经弄清楚如何将数据钻取到频率表 -
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
为什么会发生这种情况,我该如何解决这个问题?
答案 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)
答案 3 :(得分:0)
我认为它应该是一个条形图,就像这样:
barplot(dt$Freq, names.arg = dt$Overall.Cond)