Como remodelar dados entre formatos largos e longos em r
Um quadro de dados em R pode ser exibido em formato largo ou longo .
Dependendo da sua finalidade, você pode querer que o quadro de dados esteja em um desses formatos específicos.
A maneira mais fácil de remodelar dados entre esses formatos é usar as duas funções a seguir do pacote Tidyr em R:
- pivot_longer() : remodela um bloco de dados de formato amplo para formato longo.
- pivot_wider() : remodela um bloco de dados de formato longo para formato largo.
Os exemplos a seguir mostram como usar cada função na prática.
Exemplo 1: remodelar dados de largos para longos
Suponha que temos o seguinte quadro de dados em R que está atualmente em formato amplo:
#create data frame
df <- data. frame (player=c('A', 'B', 'C', 'D'),
year1=c(12, 15, 19, 19),
year2=c(22, 29, 18, 12))
#view data frame
df
player year1 year2
1 to 12 22
2 B 15 29
3 C 19 18
4 D 19 12
Podemos usar a função pivot_longer() para girar este quadro de dados em um formato longo:
library (tidyr)
#pivot the data frame into a long format
df %>% pivot_longer(cols=c(' year1 ', ' year2 '),
names_to=' year ',
values_to=' points ')
# A tibble: 8 x 3
player year points
1 A year1 12
2 A year2 22
3 B year1 15
4 B year2 29
5 C year1 19
6 C year2 18
7 D year1 19
8 D year2 12
Observe que os nomes das colunas ano1 e ano2 agora são usados como valores em uma nova coluna chamada “ano” e os valores dessas colunas originais são colocados em uma nova coluna chamada “pontos”.
O resultado final é um longo quadro de dados.
Nota : Você pode encontrar a documentação completa da função pivot_longer() aqui .
Exemplo 2: remodelar dados de longos para largos
Suponha que temos o seguinte quadro de dados em R que está atualmente em formato longo:
#create data frame
df <- data. frame (player=rep(c('A', 'B'), each= 4 ),
year=rep(c(1, 1, 2, 2), times= 2 ),
stat=rep(c('points', 'assists'), times= 4 ),
amount=c(14, 6, 18, 7, 22, 9, 38, 4))
#view data frame
df
player year stat amount
1 A 1 points 14
2 A 1 assists 6
3 A 2 points 18
4 A 2 assists 7
5 B 1 points 22
6 B 1 assists 9
7 B 2 points 38
8 B 2 assists 4
Podemos usar a função pivot_wider() para girar este quadro de dados em um formato amplo:
library (tidyr)
#pivot the data frame into a wide format
df %>% pivot_wider(names_from = stat, values_from = amount)
# A tibble: 4 x 4
player year points assists
1 A 1 14 6
2 A 2 18 7
3 B 1 22 9
4 B 2 38 4
Observe que os valores na coluna de estatísticas agora são usados como nomes de colunas e os valores na coluna de quantidade são usados como valores de células nessas novas colunas.
O resultado final é um grande bloco de dados.
Nota : Você pode encontrar a documentação completa da função pivot_wider() aqui .
Recursos adicionais
Os tutoriais a seguir explicam como realizar outras tarefas comuns em R:
Como contar valores únicos por grupo em R
Como contar valores não-NA em R
Como criar tabelas de frequência relativa em R