得到R中直方图bin的索引

时间:2012-01-13 16:21:58

标签: r bin

这是我的问题:

如何找到数字落在的直方图箱的索引?

在Matlab中,解决方案很简单。 HISTC完成这项工作:

[counts,bin] = histc(data,edges)

“bin”正是我要找的。

但是我在R中工作,而R的hist函数没有提出功能性。我想我可以管理一些代码行(使用min<这样的东西),但是因为我需要为很多数字做这些,我想找到一个更优雅的解决方案。 / p>

由于我对R不是很有经验,我希望可能存在一个棘手的解决方案,以另一种方式解决问题。

2 个答案:

答案 0 :(得分:7)

hist函数将返回bin之间的断点(如果您还没有它们)。然后,您可以使用findInterval函数查找每个点落入的间隔/ bin:

> tmp <- hist(iris$Petal.Width)
> findInterval(iris$Petal.Width, tmp$breaks)
  [1]  2  2  2  2  2  3  2  2  2  1  2  2  1  1  2  3  3  2  2  2  2  3  2  3  2
 [26]  2  3  2  2  2  2  3  1  2  2  2  2  1  2  2  2  2  2  4  3  2  2  2  2  2
 [51]  7  8  8  7  8  7  9  6  7  7  6  8  6  7  7  7  8  6  8  6 10  7  8  7  7
 [76]  7  7  9  8  6  6  6  7  9  8  9  8  7  7  7  7  7  7  6  7  7  7  7  6  7
[101] 13 10 11 10 12 11  9 10 10 13 11 10 11 11 13 12 10 12 12  8 12 11 11 10 11
[126] 10 10 10 11  9 10 11 12  8  7 12 13 10 10 11 13 12 10 12 13 12 10 11 12 10
> tmp2 <- .Last.value
> cbind( value=iris$Petal.Width, lower=tmp$breaks[tmp2], upper=tmp$breaks[tmp2+1])
       value lower upper
  [1,]   0.2   0.2   0.4
  [2,]   0.2   0.2   0.4
  [3,]   0.2   0.2   0.4
  [4,]   0.2   0.2   0.4
  [5,]   0.2   0.2   0.4
  [6,]   0.4   0.4   0.6
  [7,]   0.3   0.2   0.4
  [8,]   0.2   0.2   0.4
  [9,]   0.2   0.2   0.4
 [10,]   0.1   0.0   0.2

答案 1 :(得分:0)

有几个R包(重新)实现histc以简化移植代码。例如,