2016-12-14 3 views
0

Ich möchte die relative Häufigkeit pro Gruppen berechnen.Wie berechnet man die relative Häufigkeit pro Gruppe

Das ist mein Daten-Set:

CATEGOTY VALUE COUNT 
AAA  1  230 
AAA  0  150 
BBB  1  155 
BBB  0  320 

Das erwartete Ergebnis dieses ist, wo PROC von COUNT durch die Summe der VALUE==0 und VALUE==1 pro Gruppe Dividieren erhalten:

CATEGOTY VALUE COUNT PROC 
AAA  1  230  0.60 
AAA  0  150  0.40 
BBB  1  155  0.33 
BBB  0  320  0.67 

In der Tat I hat den ersten gruppierten Datensatz mit diesem Code empfangen:

set = df %>% 
    group_by(CATEGORY,VALUE) %>% 
    summarise(COUNT = n()) 

Also ich möchte wissen, wie Sie diesen Code anpassen, um eine weitere Spalte PROC zu erhalten.

Antwort

0

mit Base R:

df$PROC <- round(ave(df$COUNT, df$CATEGOTY, FUN=function(x)x/sum(x)),3) 
df 
# CATEGOTY VALUE COUNT PROC 
#1  AAA  1 230 0.605 
#2  AAA  0 150 0.395 
#3  BBB  1 155 0.326 
#4  BBB  0 320 0.674 
1
library(dplyr) 
df %>% group_by(CATEGOTY) %>% mutate(PROC = round(COUNT/sum(COUNT),1)) 

# CATEGOTY VALUE COUNT PROC 
#  <chr> <int> <int> <dbl> 
#1  AAA  1 230 0.6 
#2  AAA  0 150 0.4 
#3  BBB  1 155 0.3 
#4  BBB  0 320 0.7 
Verwandte Themen