Como criar uma crosstab usando dplyr (com exemplos)


Você pode usar a seguinte sintaxe básica para produzir uma tabela cruzada usando funções dos pacotes dplyr e Tidyr em R:

 df %>%
  group_by (var1, v ar2) %>%
  tally () %>%
  spread (var1,n)

Os exemplos a seguir mostram como usar essa sintaxe na prática.

Exemplo 1: Criar uma tabela cruzada básica

Suponha que temos o seguinte quadro de dados em R:

 #create data frame
df <- data. frame (team=c('A', 'A', 'A', 'A', 'B', 'B', 'B', 'B'),
                 position=c('G', 'G', 'F', 'C', 'G', 'F', 'F', 'C'),
                 dots=c(7, 7, 8, 11, 13, 15, 19, 13))

#view data frame
df

  team position points
1 AG 7
2 AG 7
3AF 8
4 AC 11
5 BG 13
6 BF 15
7 BF 19
8 BC 13

Podemos usar a seguinte sintaxe para criar uma tabela cruzada para as variáveis “equipe” e “posição”:

 library (dplyr)
library (tidyr)

#produce crosstab
df %>%
group_by (team, position) %>%
tally () %>%
spread (team, n)

# A tibble: 3 x 3
  position AB
1 C 1 1
2 F 1 2
3 G 2 1

Veja como interpretar os valores da tabela cruzada:

  • Existe 1 jogador que ocupa a posição “C” e pertence à equipe “A”
  • Existe 1 jogador que ocupa a posição “C” e pertence à equipe “B”
  • Existe 1 jogador que ocupa a posição “F” e pertence à equipe “A”
  • Existem 2 jogadores que ocupam a posição “F” e pertencem à equipa “B”
  • Existem 2 jogadores que ocupam a posição “G” e pertencem à equipe “A”
  • Existe 1 jogador que ocupa a posição “G” e pertence à equipe “B”

Observe que podemos alterar as linhas e colunas da crosstab alterando a variável usada na função spread() :

 library (dplyr)
library (tidyr)

#produce crosstab with 'position' along columns
df %>%
group_by (team, position) %>%
tally () %>%
spread (position, n)

# A tibble: 2 x 4
# Groups: team [2]
  team CFG
1 A 1 1 2
2 B 1 2 1

Relacionado: Como usar o recurso Spread no Tidyr

Recursos adicionais

Os tutoriais a seguir explicam como executar outras funções comuns no dplyr:

Como calcular frequências relativas usando dplyr
Como selecionar colunas por índice usando dplyr
Como deletar linhas usando dplyr

Add a Comment

O seu endereço de email não será publicado. Campos obrigatórios marcados com *