如何计算数据帧的列中出现值的次数?
是否有一种简单的方法来确定数值在矢量或数据帧列中的次数?我基本上想要直方图的数值,但我不知道如何访问它。如何计算数据帧的列中出现值的次数?
# sample vector
a <- c(1,2,1,1,1,3,1,2,3,3)
#hist
hist(a)
谢谢。
UPDATE:
在我使用HIST德克的建议。当我知道我的所有值都是整数时,是否有比指定范围为1.9,2.9等更好的方法?
hist(a, breaks=c(1,1.9,2.9,3.9,4.9,5.9,6.9,7.9,8.9,9.9), plot=FALSE)$counts
试试这个:
R> a <- c(1,2,1,1,1,3,1,2,3,3)
R> b <- hist(a, plot=FALSE)
R> str(b)
List of 7
$ breaks : num [1:5] 1 1.5 2 2.5 3
$ counts : int [1:4] 5 2 0 3
$ intensities: num [1:4] 1 0.4 0 0.6
$ density : num [1:4] 1 0.4 0 0.6
$ mids : num [1:4] 1.25 1.75 2.25 2.75
$ xname : chr "a"
$ equidist : logi TRUE
- attr(*, "class")= chr "histogram"
R>
R是和大多数方法产生有意义的结果返回面向对象的。使用它们。
使用table
函数。
正如你在谈论关于'hist'的建议(尽管这是OP询问的内容!!),让我提及'table()'也有一个黑暗的缺点:曾经尝试过使用数千个独特的值你正在列表的对象? ;-)在一天结束时,两者都是有价值的,但为了不同的目的。正如'cut()','quantile()'etc pp – 2010-07-05 20:42:10
我很满意任何返回值数量的方法,而且我似乎可以控制中断的数量。但是我不明白hist的结果:例如 hist(a,breaks = 3,plot = FALSE)$ counts returns 5 2 0 3 – djq 2010-07-05 20:47:28
@Dirk我不是在sn;;在我看来,使用表格是一个通用答案,hist是针对特定值数量较大的情况的优化;当你只有很少的数字可以计算时,确实与箱子打架并不是很优雅,甚至可能效率低下。 – mbq 2010-07-05 21:00:06
如果你想使用hist
你不需要像你一样指定符,只需使用seq
功能
br <- seq(0.9, 9.9, 1)
num <- hist(a, br, plot=F)$counts
另外,如果你正在寻找你也可以使用一个特定的值which
。
例如:
num <- length(which(a == 1))
除了许多独特价值的情况下hist
和table
之间的性能差异是德克和MBQ已经指出的那样,我也想提一提的功能的其他差异。
hist$counts
对于没有任何情况的箱子也会给你零计数。如果你想对后面的图中最后会显示的箱子数量(比如barplot上的酒吧)有信心,这可能非常有价值。
table
另一方面只会给你现有的价值计数。
您可能还想检查right
选项hist
,该选项控制您的休息(休息时间)是否会正确关闭。
谢谢大家的建议。我不太了解这个话题来理解表v hist的微妙之处;并发现hist最容易使用,因此将其标记为最佳答案。 – djq 2010-07-07 15:54:26