2017-11-30 3 views
1

Ich möchte den Prozentsatz für jedes Zeichen colname in meinem Dataframe berechnen, aber der Prozentsatz ist nicht gut.Prozentsatz mit Gruppe nach dplyr berechnen

Mein Code:

for(i in names(which((sapply(creditDF,class) == "character")))){ 
    distribution <- creditDF %>% 
    group_by_at(.vars = i) %>% 
    summarise(value = n(), 
      percent = value/sum(value)) %>% 
    select(label = i, value, percent) 
} 

ERGEBNIS:

label value percent 
<chr> <int> <dbl> 
1 chéquier autorisé 415  1 
2 chéquier interdit 53  1 

Normalerweise für die ersten Zeilen der Prozentsatz 415/468 * 100 ist.

Wie kann ich mein Problem beheben?

Danke für Ihre Hilfe.

Antwort

0

Hier müssen wir ungroup die sum des gesamten ‚Wert‘ -Spalte erhalten d.h

--      %>% 
    group_by_at(.vars = i) %>% 
    summarise(value = n() %>% 
    ungroup() %>% 
    mutate(percent = value/sum(value)) %>% 
    select(label = i, value, percent) 
} 
+1

Vielen Dank :). Ich kannte diese Funktion nicht. – Bourg

Verwandte Themen