【问题标题】:Breaks from hist() into a data.frame从 hist() 中断到 data.frame
【发布时间】:2015-09-13 21:33:32
【问题描述】:

我正在尝试将来自 hist 的中断和计数放入如下的 data.frame 中:

set.seed(1)

x <- rnorm(10, 3, 2)

data.frame(breaks = hist(x)$breaks, counts = hist(x)$counts)

Error in data.frame(breaks = hist(x)$breaks, counts = hist(x)$counts) : 
  arguments imply differing number of rows: 7, 6

但是正如你所看到的,这会引发错误,因为它们的长度不同。C 任何人都可以提出一个巧妙的方法吗?

或者,有没有办法在不使用hist 的情况下对连续变量进行分箱?

【问题讨论】:

  • 很抱歉,您能否详细解释一下要达到的目标?你的语法对于 R 来说似乎很不正统。
  • 当您在一维中进行N 剪切时,剪切之间将有N-1 区域。 class(data.frame) 不允许您有不均匀长度的列。如果您只是尝试将数据分段到 bin 中,那么您最好使用cut()
  • @Vlo 我想到了cut 。但是如果不参考hist,我将如何决定休息时间?或者换句话说,hist 使用什么算法来分箱变量?
  • @luciano hist 似乎默认为breaks = "Sturges",这可能与nclass.Sturges() 有关。Google 上有很多提到 Sturges 的公式/规则。

标签: r dataframe histogram


【解决方案1】:

休息时间总是比计数长一。因为计数落在每对休息之间。也许您想改为跟踪区域的中点?

with(hist(x), data.frame(breaks = mids, counts = counts))

否则你可以只为区域右边缘的值分配计数

with(hist(x), data.frame(breaks = breaks[-1], counts = counts))

或者您可以跟踪开始/结束

with(hist(x), data.frame(embed(breaks,2), counts = counts))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-23
    • 2016-05-15
    • 1970-01-01
    • 2023-01-03
    • 2012-05-13
    相关资源
    最近更新 更多