2017-08-29 1 views
-2

Je souhaite obtenir le nombre de valeurs uniques d'une colonne groupée par une autre colonne à l'aide de dplyr. Fonction préférée préférable, c'est que je peux mettre cela dans une fonction et cela fonctionnera facilement. Ainsi, par exemple pour la trame de données suivanteNombre d'occurrences dplyr uniques sur les colonnes

test = data.frame(one=rep(letters[1:5],each=2), two=c(rep("c", 3), rep("d", 2), rep("e", 4), "f")) 

    one two 
1 a c 
2 a c 
3 b c 
4 b d 
5 c d 
6 c e 
7 d e 
8 d e 
9 e e 
10 e f 

Je voudrais quelque chose comme le nombre de valeurs uniques colonne deux donne la première colonne.

sortie désiré:

one n 
1 a 1 
2 b 2 
3 c 2 
4 d 1 
5 e 2 

De colonne une, a a une valeur unique "c" seulement, b a 2 valeur unique "c" et "d", c a 2 valeurs uniques "d" et "e", d a 1 valeur unique "e".

J'ai réussi à obtenir quelque chose qui fonctionne avec group_by() deux fois et summarize(), y a-t-il un moyen plus simple d'utiliser?

Espérons que cela soit compréhensible.

Merci

Répondre

-1

Nous pouvons regrouper par « un » et obtenir le nombre d'éléments uniques avec n_distinct

library(dplyr) 
test %>% 
    group_by(one) %>% 
    summarise(n = n_distinct(two))