【问题标题】:How to bin frequency above and below a value如何分频高于和低于一个值
【发布时间】:2014-09-25 17:05:42
【问题描述】:

关于 R 中的分箱有很多问题,但我没有遇到过这个特殊问题。我有一个数字列表,想将频率 2 分箱。

为了澄清,我需要一个直方图,其中包含两个由值 2 组成的 bin。

我的变量是

Var = a
 [1] 2 2 1 0 1 1 1 1 1 3 2 3 3 5 1 4 4 0 3 4 1 0 3 3 0 0 1 3 2 6 2 2 2 1
[35] 0 2 3 2 0 0 0 0 3 2 2 4 3 2 2 0 4 1 0 1 3 1 4 3 1 2 6 7 6 1 2 2 4 5
[69] 3 0 6 5 2 0 7 1 7 3 1 4 1 1 2 1 1 2 1 1 4 2 0 3 3 2 2 2 5 3 2 5 2 5

我可以将数字整理成表格,查看每个数字出现的频率

a = table(var)

        Var1     Freq
    1   0     15
    2   1     23
    3   2     25
    4   3     17
    5   4     9
    6   5     6
    7   6     4
    8   7     3

现在我如何对 2 的值进行分箱?

【问题讨论】:

  • 这是一个有趣的建议。我用 'GreaterThan2= sum(var>2); 做了类似的事情lessThan2= sum(var
  • 我认为您不需要直方图。试试barplot。即barplot(table(var<=2))
  • 谢谢@user20650,这就是我想要的。您能否将其作为答案顶一下,因为它非常有用

标签: r histogram


【解决方案1】:

你可以这样做:

ct  <- cut(a, breaks = c(0, 2, max(a)), include.lowest=TRUE, labels=c("<=2", ">2"))
## [1] <=2 <=2 <=2 <=2 <=2 <=2 <=2 <=2 <=2 >2  <=2 >2  >2  >2  <=2 >2  >2  <=2
## [19] >2  >2  <=2 <=2 >2  >2  <=2 <=2 <=2 >2  <=2 >2  <=2 <=2 <=2 <=2 <=2 <=2
## [37] >2  <=2 <=2 <=2 <=2 <=2 >2  <=2 <=2 >2  >2  <=2 <=2 <=2 >2  <=2 <=2 <=2
## [55] >2  <=2 >2  >2  <=2 <=2 >2  >2  >2  <=2 <=2 <=2 >2  >2  >2  <=2 >2  >2 
## [73] <=2 <=2 >2  <=2 >2  >2  <=2 >2  <=2 <=2 <=2 <=2 <=2 <=2 <=2 <=2 >2  <=2
## [91] <=2 >2  >2  <=2 <=2 <=2 >2  >2  <=2 >2  <=2 >2 
## Levels: <=2 >2

table(ct)
## ct
## <=2  >2 
## 63   39

您可以按照@user20650 的建议使用barplot 绘制它:

barplot(table(ct))

【讨论】:

    【解决方案2】:

    当您将向量一分为二时,您可以通过将不等式语句直接应用于向量来创建组。要绘制表格,您可以使用 barplot

    set.seed(1)     
    var <- sample(1:10, 100, T)
    
    (tab <- table(var<=2))
    #FALSE  TRUE 
    #   87    13 
    
    barplot(tab)
    

    或者直接

    barplot(table(var<=2))
    

    更多类别,可以使用cut对向量进行分类

    【讨论】:

      猜你喜欢
      • 2023-02-09
      • 1970-01-01
      • 2018-03-14
      • 2017-02-18
      • 1970-01-01
      • 1970-01-01
      • 2015-09-03
      • 2016-06-08
      相关资源
      最近更新 更多