2012-01-13 4 views
2

여기 내 문제가 있습니다 :히스토그램 빈의 색인 가져 오기 R

숫자가 속하는 막대 그래프의 색인을 어떻게 찾을 수 있습니까?

Matlab에서 솔루션은 쉽습니다. HISTC는 다음과 같이 일합니다 :

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

"bin"은 내가 찾고있는 것입니다.

그러나 저는 R에서 일하고 있으며, R의 hist 함수는 functionnality를 제안하지 않습니다. 몇 줄의 코드 (min< 등)를 사용하여 관리 할 수 ​​있다고 생각하지만, 많은 숫자를 처리해야하므로 좀 더 우아한 해결책을 찾고 싶습니다.

저는 R에 익숙하지 않으므로 다른 방법으로 문제를 해결하기 위해 까다로운 해결책이 존재하기를 바랍니다.

답변

7

hist 함수는 아직 가지고 있지 않은 경우 저장소간에 중단 점을 반환합니다. 코드를 포팅 완화 histc을 구현

> 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 
+0

를 들어 findInterval 내가, 많은 감사를 필요로 정확히입니다! – fstevens

관련 문제