Compter le nombre de chaque ligne unique dans une trame de données? [fermé]

8

Supposons que j'ai une trame de données comme:

df<-data.frame(x1=c(0,1,1,1,2,3,3,3),
x2=c(0,1,1,3,2,3,3,2),
x3=c(0,1,1,1,2,3,3,2))
df
  x1 x2 x3
1  0  0  0
2  1  1  1
3  1  1  1
4  1  3  1
5  2  2  2
6  3  3  3
7  3  3  3
8  3  2  2

ce que je veux, c'est de compter le nombre de chaque ligne unique comme:

  x1 x2 x3 count
1  0  0  0  1
2  1  1  1  2
4  1  3  1  1
5  2  2  2  1 
6  3  3  3  2
8  3  2  2  1

Quelle est la façon la plus simple de le réaliser dans R?

David Z
la source
@Whuber, au lieu de le mettre en attente, migrez-le simplement vers SO. C'est une question raisonnable, bien formatée et claire posée sur un mauvais site SE. Nous pouvons y apporter de nombreuses autres bonnes réponses dont les futurs utilisateurs pourront bénéficier.
David Arenburg
@David A Merci pour la suggestion. Je pense que vous avez raison, mais à l'époque (a) j'ai vu qu'il y avait une réponse ici et (b) je soupçonnais fortement que cette question était apparue sur SO auparavant.
whuber
1
@whuber, je n'ai pas vérifié les dupes, mais je pense que l'OP recevrait encore beaucoup de bonnes réponses. Quoi qu'il en soit, il semble qu'ils soient bons avec plyrce qui n'a plus d'importance, je suppose.
David Arenburg

Réponses:

13

Utilisez la countfonction du plyrpackage.

library(plyr)
df = data.frame(x1=c(0,1,1,1,2,3,3,3),
               x2=c(0,1,1,3,2,3,3,2),
               x3=c(0,1,1,1,2,3,3,2))

count(df, vars = c("x1", "x2", "x3"))

Production:

> count(df, vars = c("x1", "x2", "x3"))
  x1 x2 x3 freq
1  0  0  0    1
2  1  1  1    2
3  1  3  1    1
4  2  2  2    1
5  3  2  2    1
6  3  3  3    2
tchakravarty
la source
1
J'ai copié et collé votre code. J'ai eu: "Erreur dans mutate_impl (.data, dots): la colonne varsdoit être de longueur 8 (le nombre de lignes) ou une, pas 3"
StatsSorceress