【问题标题】:Binning an unevenly distributed column in R在 R 中对分布不均匀的列进行分箱
【发布时间】:2018-05-28 16:18:25
【问题描述】:

我必须在 R 中有一列分布不均匀,如指数分布。我想对数据进行规范化,然后将数据分箱到后续的存储桶中。

看到以下链接有助于规范化数据,但没有将数据分类到不同类别。

Normalizing data in R

Standardize data columns in R

示例:均匀分布列的外观,但行数很多。

dat <- data.frame(Id = c(1,2,3,4,5,6,7,8),
                  Qty = c(1,1,1,2,3,13,30,45))

我希望它将列分为 5 个类别,如下所示:

dat <- data.frame(Id = c(1,2,3,4,5,6,7,8),
                      Qty = c(1,1,1,2,3,13,30,45),
                      Binned_Category = c(1,1,1,1,2,3,4,5))

以上 binned_Category 是示例,对于给定数据,在现实世界中的值可能与此不同。我只是想展示我希望输出的样子。

【问题讨论】:

  • 您的分箱标准是什么?这会涉及截止范围吗?我发现很难理解您是如何到达 Binned_Category 列的。
  • cut() 是您正在寻找的东西
  • @M_Shimal:我假设在对列进行归一化之后,我的值将介于 0-1 之间,然后将这些值分成 5 个相等的 bin
  • 正如@abhiieor 指出的那样,我认为 cut() 是您正在寻找的。看看这个stackoverflow.com/questions/40794821/…
  • @abhiieor:你能提供完整的答案吗?如何首先将指数分布转换为 0-1,然后将其“切割”到 bin 中

标签: r mean binning exponential-distribution


【解决方案1】:

这会有所帮助:

num_bins <- 5
findInterval(Qty, unique(quantile(Qty, prob = seq(0, 1, 1/num_bins))))

【讨论】:

  • 它工作,但不是 rexp(10),它应该是 Qty
  • 我的列数量遵循指数分布
猜你喜欢
  • 2019-07-26
  • 1970-01-01
  • 2023-04-06
  • 2016-03-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-04-04
相关资源
最近更新 更多