2016-05-03 56 views
0

我有一个数据组中,看起来像下面这样:http://i.imgur.com/OdiLf4t.png的R - 频率分布的中位数,由另一个变量

名称|状态|邮编| County_name |平均付款|频率

我希望的输出是按国家分组,并使用平均付款和频率列的中位数付款。

我知道如何为整个数据集做这个

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

但不知道如何通过国家 做到这一点谢谢

+0

的可能的复制[如何总和组变量?](HTTP://计算器.com/questions/1660124/how-to-sum-a-variable-by-group) – MichaelChirico

回答

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] 
+0

谢谢你,dplyr方法效果很好! –

1

可以使用by做分割数据帧和每个片执行此功能:

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