2016-05-03 13 views
0

ich einen Datensatz haben, die aussehen wie folgt: http://i.imgur.com/OdiLf4t.pngR - Median einer Häufigkeitsverteilung, durch eine andere Variable gruppiert

Name | Staat | Postleitzahl | Kreisname | durchschnittliche Zahlung | Häufigkeit

Meine gewünschte Ausgabe wäre eine Gruppierung nach Staat und die Median-Zahlung mit den Spalten für die durchschnittliche Zahlung und Häufigkeit.

Ich weiß, wie diese

für die Gesamtdatenmenge zu tun
median(rep(Clean$medicare_average_payment, Clean$Frequency))   

aber nicht sicher, wie dies von Staat zu tun Danke

+0

Mögliche Duplikat [Wie eine Variable, die durch Gruppe zusammenzufassen?] (Http: // Stackoverflow .com/questions/1660124/how-to-sum-a-variable-by-group) – MichaelChirico

Antwort

1

Wir mit dplyr

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

Oder mit data.table

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

Danke, die dplyr-Methode hat super funktioniert! –

1

Sie können by verwenden, um den Datenrahmen zu tun aufgeteilt und diese Funktion auf jedem Stück durchführen:

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