R - 频率分布的中位数,由另一个变量分组

R - Median of a Frequency distribution, grouped by another variable

我的数据集如下所示:http://i.imgur.com/OdiLf4t.png

姓名 |状态 |邮政编码 | County_name |平均付款 |频率

我想要的输出是按州分组,并使用平均付款和频率列获得中位数付款。

我知道如何对整个数据集执行此操作

median(rep(Clean$medicare_average_payment, Clean$Frequency))        

但不确定州如何执行此操作 谢谢

我们可以试试dplyr

library(dplyr)    
Clean1 <- Clean[rep(1:nrow(Clean), Clean$Frequency),]
Clean1 %>%
      group_by(State) %>%
      summarise(Median = median(medicare_average_payment))

或使用data.table

library(data.table)
setDT(Clean)[, .(Median = median(rep(medicare_average_payment, Frequency))) , State]

您可以使用by分割数据框并对每一块执行此功能:

by(Clean, Clean$State, 
   FUN=function(x) median(rep(x$medicare_average_payment, x$Frequency))
)