5.4 haven
Para ler arquivos gerados por outros softwares, como SPSS, SAS e STATA, você pode usar as funções do pacote haven
. Este pacote faz parte do tidyverse
e é um wrapper da biblioteca ReadStat, escrita em C.
library(haven)
<- read_sas("assets/data/imdb.sas7bdat")
imdb_sas <- read_spss("assets/data/imdb.sav")
imdb_spss <- read_dta("assets/data/imdb.dta") imdb_dta
É possível salvar ou escrever bases em SAS e STATA com as funções write_sas
e write_dta
.
write_dta(mtcars, 'assets/data/mtcars.dta')
Quando importamos arquivos gerados pelo SAS, SPSS ou STATA para o R, os rótulos de uma variável podem não ser importados de forma correta. O pacote haven
tem uma solução para este problema.
<- labelled(c(1,1,2,3,2,2,1,2), c(Ruim = 1, Bom = 2, Otimo = 3)) x
labelled()
adiciona rótulos à valores de uma variável. Para verificar quais são estes rótulos, podemos usar a função print_labels()
.
print_labels(x)
##
## Labels:
## value label
## 1 Ruim
## 2 Bom
## 3 Otimo
Existe uma função similar a labelled()
, exclusiva para o SPSS, que além de rotular as variáveis, também define quais símbolos representam valores faltantes, dado que em SPSS pode haver mais de um tipo de missing.
<- labelled_spss(c(1,3,0,2,2,1,0,2,4), c(Ruim = 1,Bom = 2, Otimo = 3), na_values = c(0,4))
x1
is.na(x1)
## [1] FALSE FALSE TRUE FALSE FALSE FALSE TRUE FALSE TRUE
Agora que já definimos os missings “especiais”, podemos transformá-los no missing padrão do R, representado pelo símbolo NA.
<- zap_missing(x1)
x1 x1
## [1] 1 3 NA 2 2 1 NA 2 NA
## attr(,"labels")
## Ruim Bom Otimo
## 1 2 3
## attr(,"class")
## [1] "haven_labelled"
Existem outras funções zap_
interessantes no pacote.
Após rotular os valores do vetor, podemos convertê-los, por exemplo, em fator. Para isso, usamos uma função do pacote haven
.
A função base as.factor()
também poderia ser usada, mas quando a usamos, os rótulos não são considerados.
<- base::as.factor(x)
x_base levels(x_base)
## [1] "1" "2" "3"
<- haven::as_factor(x)
x_factor levels(x_factor)
## [1] "Ruim" "Bom" "Otimo"