2014-07-06 49 views
4

刚刚好转R和我有以下问题:R- hist.default, 'X' 必须是数字

说我有以下data.frame:

v1  v2  v3 
3  16  a 
44  457 d 
5  23  d 
34  122 c 
12  222 a 

...和等等

我想为R创建一个直方图或条形图,但不是让x轴成为数字值之一,我想用v3来计数。 (2a,1c,2d ...等)

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

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

回答

7

好的。首先,你应该确切知道histogram是什么。这不是一个计数阴谋。它是一个可视化变量,用于估计潜在的概率密度函数。所以不要尝试在分类数据上使用hist。 (这就是为什么hist告诉你,你通过的值必须是数字。)

如果你只是想离散值的计数,那只是一个基本的棒图。您可以使用table计算离散数据中R值的计数,然后使用基本命令barplot()对其进行绘图。

barplot(table(dataFrame$v3)) 

如果你想需要观察的最少数量,尽量

tbl<-table(dataFrame$v3) 
atleast <- function(i) {function(x) x>=i} 
barplot(Filter(atleast(10), tbl)) 
+0

谢谢。我是一个完整的新手。现在我创建了这个条形图,我发现在数百个和几个只有1或2的结果中有很多结果。如果数据不满足最小数量的实例,是否有排除数据的方法? – Charistine

+0

@ user3594525我在答案中添加了一个可能的解决方案。 – MrFlick

相关问题