2 votes

R Obtenir des comptes groupés - ctable et table ne me donnent pas ce que je cherche

En utilisant mtcars, j'aimerais obtenir un comptage groupé de l'am, de l'engrenage et du carburateur. Les premières lignes ressemblent à ceci :

am  gear carb
1   4     4
1   4     4
1   4     1
0   3     1
0   3     2
0   3     1
0   3     4
0   4     2
0   4     2

Et je veux obtenir une sortie qui ressemble à ceci :

am  gear carb   Count
0   3     1      2
0   3     2      1
0   3     4      1
0   4     2      2
1   4     1      1
1   4     4      2

Les deux tables et ctable (summarytools) font quelque chose de bizarre où ils sortent tous les chiffres et ce n'est pas ce que je veux.

Merci

1voto

akrun Points 148302

Nous pouvons utiliser count

library(dplyr)
df1 %>%
      count(am, gear, carb)
# A tibble: 6 x 4
#     am  gear  carb     n
#  <int> <int> <int> <int>
#1     0     3     1     2
#2     0     3     2     1
#3     0     3     4     1
#4     0     4     2     2
#5     1     4     1     1
#6     1     4     4     2

Ou

df1 %>%
    group_by_all() %>%
    summarise(Count = n())

données

df1 <- structure(list(am = c(1L, 1L, 1L, 0L, 0L, 0L, 0L, 0L, 0L), gear = c(4L, 
4L, 4L, 3L, 3L, 3L, 3L, 4L, 4L), carb = c(4L, 4L, 1L, 1L, 2L, 
1L, 4L, 2L, 2L)), class = "data.frame", row.names = c(NA, -9L
))

0voto

Dominic Comtois Points 281

Avec la base R, vous pouvez également le faire :

as.data.frame(table(df1))

Et pour filtrer les combinaisons non-occurrentes :

freqs <- as.data.frame(table(df1))
freqs[freqs$Freq > 0,]

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X