2016-05-03 8 views
0

У меня есть набор данных, который выглядеть следующим образом: http://i.imgur.com/OdiLf4t.pngR - Медиана распределения частот, сгруппированных по другой переменной

Имя | Государство | Почтовый индекс | County_name | средний взнос | Частота

Мой желаемый результат состоял бы в том, чтобы группировать по штату и получать медианный платеж с использованием средних столбцов оплаты и частоты.

Я знаю, как сделать это для общего набора данных

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

, но не знаете, как сделать это с помощью государства Спасибо

+0

Возможный дубликат [Как суммировать переменную по группам?] (HTTP: // StackOverflow .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)) 
)