web-dev-qa-db-fra.com

Comment utiliser dplyr pour générer une table de fréquences

J'aime créer une table qui a la fréquence de plusieurs colonnes dans mon bloc de données. Je copie une partie de mon bloc de données ci-dessous.

Le tableau est censé avoir une fréquence (à la fois n et%) de "rouge" en couleur et de "F" en genre.

Je pense que le paquet dplyr pourrait le faire mais je ne peux pas le comprendre.

Merci-

 ID répondant Couleur Sexe 
 1 1503 Rouge F 
 2 1653 NA M 
 3 1982 Rouge F 
 4 4862 Rouge NA 
 15 4880 Bleu M 
 
20
Rooz
library(dplyr)

df %>%
  count(Color, Gender) %>%
  group_by(Color) %>%          # now required with changes to dplyr::count()
  mutate(prop = prop.table(n))

# Source: local data frame [4 x 4]
# Groups: Color [3]
# 
#    Color Gender     n      prop
#   (fctr) (fctr) (int)     (dbl)
# 1   Blue      M     1 1.0000000
# 2    Red      F     2 0.6666667
# 3    Red     NA     1 0.3333333
# 4     NA      M     1 1.0000000

Mise à jour par commentaire - si vous souhaitez examiner chaque variable séparément, vous devrez d'abord réorganiser la trame de données. Vous pouvez accomplir cela avec tidyr:

library(tidyr)
library(dplyr)

gather(df, "var", "value", -RespondentID) %>%
  count(var, value) %>%
  group_by(var) %>%             # now required with changes to dplyr::count()
  mutate(prop = prop.table(n))

# Source: local data frame [6 x 4]
# Groups: var [2]
# 
#      var value     n  prop
#   (fctr) (chr) (int) (dbl)
# 1  Color  Blue     1   0.2
# 2  Color   Red     3   0.6
# 3  Color    NA     1   0.2
# 4 Gender     F     2   0.4
# 5 Gender     M     2   0.4
# 6 Gender    NA     1   0.2
32
JasonAizkalns