r- hist.default,'x'必须是数字

Cha*_*ine 5 r histogram

刚拿起R,我有以下问题:

说我有以下data.frame:

v1     v2     v3  
3      16     a  
44     457    d  
5      23     d  
34     122    c  
12     222    a
Run Code Online (Sandbox Code Playgroud)

...等等

我想在R中为此创建一个直方图或条形图,但不是让x轴成为数值之一,我想要按v3计算.(2 a,1 c,2 d ......等)

如果我这样做hist(dataFrame$v3),我会得到错误'x 'must be numeric.

  1. 为什么它不能像其他列一样计算每个不同字符串的实例?
  2. 什么是最简单的代码?

MrF*_*ick 9

好.首先,您应该确切地知道直方图是什么.这不是一个计数图.它是连续变量的可视化,用于估计潜在的概率密度函数.所以不要试图hist在分类数据上使用.(这就是为什么hist告诉你传递的值必须是数字的原因.)

如果您只想要离散值的计数,那只是一个基本的条形图.您可以使用R计算离散数据的R值table,然后使用基本barplot()命令绘制.

barplot(table(dataFrame$v3))
Run Code Online (Sandbox Code Playgroud)

如果您想要求最少数量的观察,请尝试

tbl<-table(dataFrame$v3)
atleast <- function(i) {function(x) x>=i}
barplot(Filter(atleast(10), tbl))
Run Code Online (Sandbox Code Playgroud)