Na tabela, é possível extrair a nota de cada pessoa em cada exame. Pense rapidamente em quais variáveis gostaríamos de gerar com essa frase!
statclass
## name stat1 stat2 r spss
## 1 momo 12 5 6 9
## 2 kim 14 10 13 15
## 3 sascha 7 4 4 1
nomes
: momo, sascha, kimcurso
: estatI, estatII, r, spssnota
: Valor dependente dos dois anteriores.
Portanto, há duas informações nas colunas estat1
, estat2
, r
e spss
. Ou seja, qual teste é (implicitamente através do nome da variável) e a nota. Aqui, os valores são dados como nomes de variáveis, o que viola as regras de um conjunto de dados tidy. No entanto, em um formato tidy, precisamos ter ambas as informações explicitamente! Pois os nomes das colunas aqui são valores (tipo de exame) e não apenas nomes.
Para corrigir isso, usamos pivot_longer()
. Primeiro, especificamos quais colunas devem ser reorganizadas (no nosso caso, estat1
até spss
), em seguida, em quais novas variáveis os nomes ou os valores devem ser armazenados. Com names_to
, nomeamos a nova variável que distingue o teste e com values_to
, nomeamos a variável que contém as notas.
statclassTidy <- statclass %>%
pivot_longer(
stat1:spss,
names_to = "course",
values_to = "grade"
) %>%
arrange(
name,
course
)
statclassTidy
## # A tibble: 12 × 3
## name course grade
## <chr> <chr> <dbl>
## 1 kim r 13
## 2 kim spss 15
## 3 kim stat1 14
## 4 kim stat2 10
## 5 momo r 6
## 6 momo spss 9
## 7 momo stat1 12
## 8 momo stat2 5
## 9 sascha r 4
## 10 sascha spss 1
## 11 sascha stat1 7
## 12 sascha stat2 4
Agora temos um formato long que muitas vezes facilita o processamento de dados (por exemplo, com ggplot2
). Mas cuidado: Agora não é mais possível calcular a média da grade
diretamente, pois isso inclui diferentes cursos. Portanto, é necessário definir condições (quando estiver no formato long).
Para reverter isso, você pode usar a função pivot_wider()
:
statclassRe <- statclassTidy %>%
pivot_wider(
names_from = course,
values_from = grade,
)
statclassRe