在R rstats中计算预汇总数据(具有均值和计数)的中位数

Tar*_*aas 2 statistics r aggregation median

如何median对已经聚合的数据进行适当的计算?

说我有一个看起来像这样的数据框

> df <- data_frame(name = c("A","B","C","D"), count = c(1,3,5,2), avg = c(100,50,20,10))
> df
# A tibble: 4 × 3
   name count   avg
  <chr> <dbl> <dbl>
1     A     1   100
2     B     3    50
3     C     5    20
4     D     2    10
Run Code Online (Sandbox Code Playgroud)

假设我们对垃圾桶中的东西了解不多,但是假设垃圾桶中的变化很小。据我们所知,我们将像这样排列值:

10 10 20 20 20 20 20 50 50 50 100
Run Code Online (Sandbox Code Playgroud)

在11个值中,中位数将是第6个值,即20

但是,如果我简单地采用median(),则R会接受4个值:10, 20, 50, 100

> median(df$avg)
[1] 35
Run Code Online (Sandbox Code Playgroud)

这不是我想要的。

如何解决这个问题并“展开”数据集?

Tar*_*aas 5

正如李哲远所说,该问题已解决。这很简单,令我惊讶的是我不知道。

with(df, median(rep.int(avg, count)) )
Run Code Online (Sandbox Code Playgroud)