首页 > 解决方案 > 计算 R 中类似直方图的数据的汇总统计

问题描述

我的数据是计数/直方图数据的形式,即向量列表,其中每个向量都有“值”,然后是“计数”:

[[1]]
[1]  1 34

[[2]]
[1]      2 233799

[[3]]
[1]     3 28129

[[4]]
[1]     4 42549

[[5]]
[1]     5 52264

这意味着,例如,得分 1 发生了 34 次,得分 2 发生了 233799 次等。

现在,我希望能够计算关于此数据的任意汇总统计信息,例如meanmediansd。但是,使用当前的数据格式是不可能的。我想知道是否有用于处理此类数据的函数、数据类型或包,这将允许我对这些数据应用通用统计信息。

我目前的 hacky 解决方法是重复第一个数字,计数n在哪里:n

  flatten_dbl(purrr::map(data, function(datum) {
    # If the histogram has the coordinate 10, 20 it means we have seen the
    # number 10, 20 times, so we duplicate 10, 20 times
    rep(datum[[1]], datum[[2]])
  }))

虽然这可行,并返回我可以应用统计信息的单个向量,但它非常慢且内存密集,因为向量最终有数百万个值。我想要一个不需要这个的解决方案。

标签: r

解决方案


我无法找到现有的核心库或 CRAN 包来解决这个问题,所以我开发了HistDat,可在 CRAN 上找到:https ://cran.r-project.org/package=HistDat


推荐阅读