我的数据集如下所示:http://i.imgur.com/OdiLf4t.png
姓名|国家|邮编| County_name |平均付款|频率
我希望的输出是按州分组,并使用平均付款和频率列进行中位数付款。
我知道如何为整个数据集
执行此操作median(rep(Clean$medicare_average_payment, Clean$Frequency))
但不确定国家如何做到这一点 谢谢
答案 0 :(得分:1)
我们可以尝试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]
答案 1 :(得分:1)
您可以使用by
拆分数据框并对每个部分执行此功能:
by(Clean, Clean$State,
FUN=function(x) median(rep(x$medicare_average_payment, x$Frequency))
)