@hackage / bins

Aggregate continuous values into discrete bins

Latest0.1.2.0

About

Metadata

  • Last updated , by jle
  • License BSD-3-Clause
  • Categories Mathematics
  • Maintained by: justin@jle.im

  • Lottery factor: 0

Links

Installation

Tested Compilers

  1. 9.12.2
  2. 9.12.1
  3. 9.10.3
  4. 9.10.2
  5. 9.10.1
  6. 9.8.4
  7. 9.8.3
  8. 9.8.2
  9. 9.8.1
  10. 9.6.7
  11. 9.6.6
  12. 9.6.5
  13. 9.6.4
  14. 9.6.3
  15. 9.6.2
  16. 9.6.1
  17. 9.4.8
  18. 9.4.7
  19. 9.4.6
  20. 9.4.5
  21. 9.4.4
  22. 9.4.3
  23. 9.4.2
  24. 9.4.1
  25. 9.2.8
  26. 9.2.7
  27. 9.2.6
  28. 9.2.5
  29. 9.2.4
  30. 9.2.3
  31. 9.2.2
  32. 9.2.1
  33. 9.0.2
  34. 9.0.1
  35. 8.10.7
  36. 8.10.6
  37. 8.10.5
  38. 8.10.4
  39. 8.10.3
  40. 8.10.2
  41. 8.10.1
  42. 8.8.4
  43. 8.8.3
  44. 8.8.2
  45. 8.8.1
  46. 8.6.5
  47. 8.6.4
  48. 8.6.3
  49. 8.6.2
  50. 8.6.1
  51. 8.4.4
  52. 8.4.3
  53. 8.4.2
  54. 8.4.1
  55. 8.2.2

Readme

bins

Bin continuous values into discrete containers in an interval, useful for histograms.

Usage

-- divide into 10 bins between 5 and 50, logarithmically
ghci> withBinner (logBS @10 5 50) $ \toBin -> do
        print (toBin 1)
        print (toBin 30)
        print (binIx (toBin 30))
        print (toBin 100)
Bin (-inf .. 5.0)       -- 1 is outside of range
Bin [25.06 .. 31.55)    -- 30 is inside bin enclosed by 25.06 and 31.55
PElem (Finite 7)        -- 30 is in Bin #7 (indexed from 0)
Bin [50 .. -inf)        -- 100 is outside of range
-- Generate a histogram based on the bins from valules in a list
ghci> xs = [1..100] :: [Double]
ghci> withBinner (logBS @10 5 50) $ \toBin -> do
         mapM_ (\(b, n) -> putStrLn (displayBinDouble 4 b ++ "\t" ++ show n))
       . M.toList
       $ binFreq toBin xs
(-inf .. 5.0000)        4
[5.0000 .. 6.2946)      2
[6.2946 .. 7.9245)      1
[7.9245 .. 9.9763)      2
[9.9763 .. 12.5594)     3
[12.5594 .. 15.8114)    3
[15.8114 .. 19.9054)    4
[19.9054 .. 25.0594)    6
[25.0594 .. 31.5479)    6
[31.5479 .. 39.7164)    8
[39.7164 .. 50.0000)    10
[50.0000 .. +inf)       51