1

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

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

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

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

4

1 回答 1

0

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

于 2012-09-26T21:32:47.340 回答