2017-10-08 1 views
0

Je rencontre des problèmes avec group_by. Je sais que mon groupe variabel a deux niveaux, mais group_by n'en renvoie qu'un seul.group_by ne retourne pas tous les niveaux dans la variable groupée

Qu'est-ce que je fais mal?

y est mon groupe variabel avec deux niveaux, mais la commande retourne cette sortie avec une seule ligne:

mean Q10 Q50 Q90 
    1 16.5 1.1 7.5 49 

Ci-dessous le code reconstitue le problème.

#A dataset: 
v <- c(1,2,3,4,5,10,20,30,40,50) 
y <- rep(0:1, each = 5) 
a <- as.data.frame.matrix(cbind(v,y)) 

#The group_by command that doesn't work  
a %>% group_by(y) %>% summarize(mean = mean(v), 
            Q10 = quantile(v, 0.1, type=6), 
            Q50 = quantile(v, 0.5, type=6), 
            Q90 = quantile(v, 0.9, type=6)) 

Répondre

2

Vous avez probablement chargé plyr après dplyr il est donc d'utiliser le mauvais summarize.

a %>% 
    group_by(y) %>% 
    plyr::summarize(mean = mean(v), 
      Q10 = quantile(v, 0.1, type=6), 
      Q50 = quantile(v, 0.5, type=6), 
      Q90 = quantile(v, 0.9, type=6)) 
# mean Q10 Q50 Q90 
# 1 16.5 1.1 7.5 49 

a %>% 
    group_by(y) %>% 
    dplyr::summarize(mean = mean(v), 
      Q10 = quantile(v, 0.1, type=6), 
      Q50 = quantile(v, 0.5, type=6), 
      Q90 = quantile(v, 0.9, type=6)) 
# # A tibble: 2 x 5 
#  y mean Q10 Q50 Q90 
# <dbl> <dbl> <dbl> <dbl> <dbl> 
# 1  0  3  1  3  5 
# 2  1 30 10 30 50 
+0

Vous avez raison - je viens de réaliser cela, et je suis venu ici pour supprimer la question. Merci d'avoir répondu. –