计算R rstats中预聚合数据(具有均值和计数)的中值

计算R rstats中预聚合数据(具有均值和计数)的中值,r,statistics,aggregation,median,R,Statistics,Aggregation,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> <d

如何对已聚合的数据进行适当的
中值
计算

例如,如果我有一个如下所示的数据帧:

> 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
在11个值中,中位数是第6个,即第20个

但如果我只取
median()
,R取4个值:
10,20,50,100

> median(df$avg)
[1] 35
这不是我想要的


我怎样才能绕过这个问题“展开”数据集呢?

正如李哲远所评论的,这个问题已经解决了。 这很简单,我很惊讶我不知道

with(df, median(rep.int(avg, count)) )

如果数据集的计数非常高,这将是低效的,因此您可以先将所有计数除以10的某个幂,然后四舍五入到最接近的整数,以生成一个小得多、比例大致相同的数据集。您可以对任何向量执行此操作。例如
中位数(rep(df$avg,df$count))
。我也不知道“rep”是矢量化的,非常好。
with(df, median(rep.int(avg, count)) )