【问题标题】:dealing with data table with redundant rows处理具有冗余行的数据表
【发布时间】:2012-09-27 05:32:47
【问题描述】:

标题没有准确说明,但我想不出其他词来概括我要问的内容。

我有一个如下形式的表格:

value (0<v<1)        # of events
   0.5677                 100000
   0.5688                   5000
   0.1111                   6000
     ...                     ...
   0.5688                 200000
   0.1111                  35000

以下是我喜欢用这张表做的一些事情:绘制直方图、计算平均值、拟合分布等。到目前为止,我只能弄清楚如何用像这样的向量来做到这一点

v=(0.5677,...,0.5688,...,0.1111,...)

但不是表格。

由于几乎连续的可能值的数量很大,我想制作一个新表不会那么有效,因此在不修改原始表并制作另一个表的情况下这样做是非常可取的。但是,如果必须这样做,那也没关系。提前致谢。

附录:我想弄清楚的是如何将此表视为通常的数据向量: 如果我有以下向量表示与上述完全相同的数据:

v= (0.5677, ...,0.5677 , 0.5688, ... 0.5688, 0.1111,....,0.1111,....)
    ------------------   ------------------  ------------------
     (100000 times)      (5000+200000 times)  (6000+35000) times

然后我们只需要应用绘图、均值等基本函数来得到我想要的。我希望这能让我的问题更清楚。

【问题讨论】:

  • 你试过什么? ggplot可以用这种形式的数据制作直方图没问题。当您说“平均值”时,您是什么意思?你看过 R 中的各种分布和拟合函数吗?另外,您能否使用dput(head(yourdata)) 或类似的方式提供可重现的数据样本。
  • 试试这个:“从频率表中高效计算均值和标准差”stackoverflow.com/q/10397574/496803

标签: r


【解决方案1】:

您的数据由一个值和该值的计数组成,因此您正在寻找将使用计数来加权值的函数。键入 ?weighted.mean 以获取有关计算加权(分组)数据平均值的函数的信息。对于密度图,您希望在 density() 函数中使用 weights= 参数。对于直方图,您只需使用 cut() 将值组合成少量组,然后使用 aggregate() 对组中所有值的计数求和。您会在包 Hmisc 中找到各种加权统计量度(wtd.mean、wtd.var、wtd.quantile 等)。

【讨论】:

    猜你喜欢
    • 2019-02-19
    • 1970-01-01
    • 2011-01-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-14
    • 1970-01-01
    • 2017-01-13
    相关资源
    最近更新 更多