计算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)) )