Importe dados em R: leia arquivos CSV, Excel, SPSS, Stata, SAS

⚡ Resumo Inteligente

O guia "Importar Dados em R" abrange a leitura de arquivos CSV com `read.csv()`, planilhas do Excel com `readxl` e arquivos SAS, STATA ou SPSS com `haven`. Este guia também mostra como selecionar planilhas, linhas e intervalos de células com precisão durante a importação.

  • 📄 Importação de CSV: `read.csv(file, header = TRUE, sep = “,”)` carrega um arquivo separado por vírgulas de um caminho local ou de um arquivo. URL.
  • ⚠️ Alteração de versão: Desde o R 4.0.0, as colunas de caracteres permanecem como caracteres, porque stringsAsFactors agora tem o valor padrão FALSE.
  • 📗 Importação do Excel: A função read_excel() da biblioteca readxl lida com arquivos .xls e .xlsx, e a função excel_sheets() lista todas as planilhas primeiro.
  • 🎯 Seleção precisa: n_max limita o número de linhas, range aceita notação do Excel e cell_rows() ou cell_cols() aceitam índices e letras.
  • 🔄 Outros softwares: haven fornece read_sas(), read_dta() e read_sav(), cada um necessitando apenas de um caminho ou URL.
  • 🧹 Entrada limpa: Antes de importar, codifique os valores ausentes como NA e evite espaços ou símbolos nos nomes das colunas.

Importar dados em R

Os dados podem existir em vários formatos. Para cada formato R tem uma função e um argumento específicos. Este tutorial explica como importar dados para R.

Ler arquivos CSV

O formato de dados mais utilizado é o .csv, valores separados por vírgula. O R carrega uma série de bibliotecas durante a inicialização, incluindo o pacote utils. Esse pacote fornece a função read.csv(), a maneira padrão de abrir um arquivo CSV. Aqui está a sintaxe:

read.csv(file, header = TRUE, sep = ",")

Argumento:

  • lima: CAMINHO onde o arquivo está armazenado
  • cabeçalho: confirme se o arquivo possui cabeçalho ou não, por padrão o cabeçalho é definido como TRUE
  • setembro: o símbolo usado para dividir a variável. Por padrão, `,`.

Leremos o nome do arquivo de dados mtcats. O arquivo csv é armazenado online. Se o seu arquivo .csv estiver armazenado localmente, você poderá substituir o PATH dentro do trecho de código. Não se esqueça de embrulhar dentro ''. O PATH precisa ser um valor de string.

Para usuários mac, o caminho para a pasta de download é:

 "/Users/USERNAME/Downloads/FILENAME.csv"

Para usuário do Windows:

"C:\Users\USERNAME\Downloads\FILENAME.csv"

Observe que devemos sempre especificar a extensão do nome do arquivo.

  • . Csv
  • . Xlsx
  • .txt
  • ...
PATH <- 'https://raw.githubusercontent.com/guru99-edu/R-Programming/master/mtcars.csv'                
df <- read.csv(PATH, header =  TRUE, sep = ',')
length(df)

Saída:

## [1] 12
class(df$X)

Saída:

## [1] "factor"

Em versões do R anteriores à 4.0.0, a função read.csv() convertia cada coluna de caracteres em um fator, razão pela qual class(df$X) retorna “factor” acima. Você pode desativar essa conversão com stringsAsFactors = FALSE.

⚠️ Nota sobre a versão: desde R 4.0.0 O padrão é stringsAsFactors = FALSE, portanto, as colunas de caracteres permanecem como caracteres e o primeiro exemplo agora retorna “character” em uma instalação moderna. Passar o argumento explicitamente, como abaixo, produz o mesmo resultado em todas as versões e é a prática mais segura.

PATH <- 'https://raw.githubusercontent.com/guru99-edu/R-Programming/master/mtcars.csv'
df <-read.csv(PATH, header =TRUE, sep = ',', stringsAsFactors =FALSE)
class(df$X)

Saída:

## [1] "character"

A classe da variável X agora é um caractere.

read.csv() vs read_csv(): Qual você deve usar?

A função `read.csv()` já vem incluída no R base e não precisa de nenhum pacote. O pacote `readr` adiciona a função `read_csv()`, que é mais rápida e toma menos decisões em seu nome.

Critérios ler.csv() (utilitários) ler_csv() (readr)
Pacote necessário nenhum leitor
Velocidade em arquivos grandes Mais lento Várias vezes mais rápido
Returns quadro de dados comer
Nomes de coluna Espaços convertidos em pontos Mantido exatamente como descrito.
Detecção de tipo Silent Conforme descrito na especificação da coluna.
library(readr)
df <- read_csv(PATH)

# For very large files, data.table::fread() is faster still
library(data.table)
df <- fread(PATH)

Use `read.csv()` para arquivos pequenos e scripts que precisam ser executados sem pacotes adicionais. Use `read_csv()` quando o arquivo for grande ou quando for importante preservar os nomes exatos das colunas.

Ler arquivos do Excel

Excel arquivos são muito populares entre analistas de dados. As planilhas são fáceis de trabalhar e flexíveis. R está equipado com uma biblioteca readxl para importar planilhas Excel.

Use este código

require(readxl)

para verificar se o readxl está instalado em sua máquina. Se você instalar r com r-conda-essential, a biblioteca já estará instalada. Você deverá ver na janela de comando:

Saída:

Loading required package: readxl.

Se o pacote não estiver instalado, você pode instalá-lo com o conda. biblioteca ou no terminal, use conda install -c mittner r-readxl.

Use o seguinte comando para carregar a biblioteca para importar arquivos Excel.

library(readxl)

readxl_exemplo()

Usamos os exemplos incluídos no pacote readxl durante este tutorial.

Use o código

readxl_example()

para ver todas as planilhas disponíveis na biblioteca.

Readxl_Exemplo

Para verificar a localização de uma planilha específica, informe o nome dela:

readxl_example("geometry.xls")

Readxl_Exemplo

Se você instalar R com conda, as planilhas estarão localizadas em Anaconda3/lib/R/library/readxl/extdata/filename.xls

leitura_excel()

A função read_excel() abre os arquivos com extensão .xls e .xlsx e seleciona automaticamente o analisador sintático correto.

A sintaxe é:

read_excel(PATH, sheet = NULL, range= NULL, col_names = TRUE)
arguments:
-PATH: Path where the excel is located
-sheet: Select the sheet to import. By default, all
-range: Select the range to import. By default, all non-null cells
-col_names: Select the columns to import. By default, all non-null columns

Podemos importar as planilhas da biblioteca readxl e contar o número de colunas da primeira planilha.

# Store the path of `datasets.xlsx`
example <- readxl_example("datasets.xlsx")
# Import the spreadsheet
df <- read_excel(example)
# Count the number of columns
length(df)

Saída:

## [1] 5

planilhas_excel()

O arquivo datasets.xlsx é composto por 4 planilhas. Podemos descobrir quais planilhas estão disponíveis na pasta de trabalho usando a função excel_sheets()

example <- readxl_example("datasets.xlsx")

excel_sheets(example)

Saída:

[1] "iris"     "mtcars"   "chickwts" "quakes"

Se uma planilha incluir muitas planilhas, será fácil selecionar uma planilha específica usando os argumentos da planilha. Podemos especificar o nome da planilha ou o índice da planilha. Podemos verificar se ambas as funções retornam a mesma saída com idêntico().

example <- readxl_example("datasets.xlsx")
quake <- read_excel(example, sheet = "quakes")
quake_1 <-read_excel(example, sheet = 4)
identical(quake, quake_1)

Saída:

## [1] TRUE

Podemos controlar quais células ler de 2 maneiras

  1. Use o argumento n_max para retornar n linhas
  2. Use o argumento range combinado com cell_rows ou cell_cols

Por exemplo, definimos n_max igual a 5 para importar as primeiras cinco linhas.

# Read the first five row: with header
iris <-read_excel(example, n_max =5, col_names =TRUE)

Excel_Planilhas

Se alterarmos col_names para FALSE, R cria os cabeçalhos automaticamente.

# Read the first five row: without header
iris_no_header <-read_excel(example, n_max =5, col_names =FALSE)

iris_no_header

No conjunto de dados iris_no_header, o readxl gerou cinco nomes de espaço reservado. Versões mais antigas produziam de X__1 a X__5, enquanto as versões atuais produzem de …1 a …5.

Excel_Planilhas

Também podemos usar o argumento range para selecionar linhas e colunas na planilha. No código abaixo, usamos o estilo Excel para selecionar o intervalo A1 a B5.

# Read rows A1 to B5
example_1 <-read_excel(example, range = "A1:B5", col_names =TRUE)
dim(example_1)

Saída:

## [1] 4 2

O exemplo_1 retorna 4 linhas e 2 colunas. O intervalo A1:B5 abrange cinco linhas da planilha, mas a primeira é utilizada como cabeçalho, razão pela qual a dimensão é 4 por 2.

Excel_Planilhas

No segundo exemplo, usamos a função cell_rows() que controla o intervalo de linhas a retornar. Se quisermos importar as linhas 1 a 5, podemos definir cell_rows(1:5). Observe que cell_rows(1:5) retorna a mesma saída que cell_rows(5:1).

# Read rows 1 to 5
example_2 <-read_excel(example, range =cell_rows(1:5),col_names =TRUE)			
dim(example_2)

Saída:

## [1] 4 5

example_2, por outro lado, é 4 por 5. cell_rows(1:5) novamente trata a primeira linha como o cabeçalho, então quatro linhas de dados são retornadas em todas as cinco colunas.

Excel_Planilhas

Caso queiramos importar linhas que não comecem na primeira linha, devemos incluir col_names = FALSE. Se usarmos range = cell_rows(2:5), fica óbvio que nosso quadro de dados não possui mais cabeçalho.

iris_row_with_header <-read_excel(example, range =cell_rows(2:3), col_names=TRUE)
iris_row_no_header <-read_excel(example, range =cell_rows(2:3),col_names =FALSE)

Excel_Planilhas

Você também pode selecionar colunas por letra, exatamente como no Excel:

# Select columns A and B
col <- read_excel(example, range = cell_cols("A:B"))
dim(col)

Saída:

## [1] 150   2

Nota: range = cell_cols(“A:B”), retorna a saída de todas as células com valor não nulo. O conjunto de dados contém 150 linhas, portanto, read_excel() retorna linhas até 150. Isso é verificado com a função dim().

O argumento `na` indica à função `read_excel()` quais valores devem ser considerados como ausentes. Conte-os com `sum()` e `is.na()`:

  1. soma
  2. é.na

Aqui está o código

iris_na <-read_excel(example, na ="setosa")
sum(is.na(iris_na))

Saída:

## [1] 50

Faltam 50 valores, que são as linhas pertencentes à espécie setosa.

Importar dados de outros softwares estatísticos

Os arquivos de outros pacotes estatísticos são importados com o refúgio pacote, que suporta SAS, STATA e SPSS. Podemos usar a seguinte função para abrir diferentes tipos de conjuntos de dados, de acordo com a extensão do arquivo:

  • SAS: read_sas()
  • STATA: read_dta() (ou read_stata(), que são idênticos)
  • SPSS: read_sav() ou read_por(). Precisamos verificar a extensão

Cada uma dessas funções precisa apenas de um argumento, o caminho onde o arquivo está armazenado, e cada uma aceita um URL tão facilmente quanto uma trilha local.

library(haven)

Haven vem com conda r-essencial, caso contrário vá para o link ou no terminal conda install -c conda-forge r-haven

Ler arquivos SAS

Para nosso exemplo, usaremos o conjunto de dados de admissão do IDRE.

PATH_sas <- 'https://github.com/guru99-edu/R-Programming/blob/master/binary.sas7bdat?raw=true'
df <- read_sas(PATH_sas)
head(df)

Saída:

## # A tibble: 6 x 4
##   ADMIT   GRE   GPA  RANK
##   <dbl> <dbl> <dbl> <dbl>
## 1     0   380  3.61     3
## 2     1   660  3.67     3
## 3     1   800  4.00     1
## 4     1   640  3.19     4
## 5     0   520  2.93     4
## 6     1   760  3.00     2

Ler arquivos STATA

Para arquivos de dados STATA você pode usar read_dta(). Usamos exatamente o mesmo conjunto de dados, mas armazenamos em um arquivo .dta.

PATH_stata <- 'https://github.com/guru99-edu/R-Programming/blob/master/binary.dta?raw=true'
df <- read_dta(PATH_stata)
head(df)

Saída:

## # A tibble: 6 x 4				
##   admit   gre   gpa  rank				
##   <dbl> <dbl> <dbl> <dbl>				
## 1     0   380  3.61     3				
## 2     1   660  3.67     3				
## 3     1   800  4.00     1				
## 4     1   640  3.19     4				
## 5     0   520  2.93     4				
## 6     1   760  3.00     2

Ler arquivos SPSS

A função read_sav() abre um arquivo SPSS com a extensão .sav.

PATH_spss <- 'https://github.com/guru99-edu/R-Programming/blob/master/binary.sav?raw=true'
df <- read_sav(PATH_spss)
head(df)

Saída:

## # A tibble: 6 x 4				
##   admit   gre   gpa  rank				
##   <dbl> <dbl> <dbl> <dbl>				
## 1     0   380  3.61     3				
## 2     1   660  3.67     3			
## 3     1   800  4.00     1				
## 4     1   640  3.19     4				
## 5     0   520  2.93     4				
## 6     1   760  3.00     2

Melhores Práticas para Importação de Dados

Verificar a lista abaixo antes de importar evita a maior parte do trabalho de limpeza posterior:

  • O formato típico de uma planilha é usar as primeiras linhas como cabeçalho (geralmente o nome das variáveis).
  • Evite espaços em branco em nomes de arquivos ou colunas, pois eles podem ser interpretados como separadores de coluna. Em vez disso, use um sublinhado.
  • Nomes curtos são preferidos
  • Não utilize símbolos no nome. Escreva exchange_rate_dollar_euro em vez de exchange_rate_$_€.
  • Codifique os valores ausentes como NA em vez de espaços em branco, traços ou números sentinela, como -99, que, de outra forma, teriam que ser limpos posteriormente.

Importando dados em R: Referência de funções

A tabela abaixo lista a função de importação para cada tipo de arquivo, a biblioteca que a fornece e seus argumentos padrão:

Biblioteca Objetivo função Argumentos Padrão
útil Ler arquivo CSV ler.csv() arquivo, cabeçalho = VERDADEIRO, sep = “,”
readxl Ler arquivo EXCEL leitura_excel() caminho, intervalo = NULL, col_names = TRUE
refúgio Ler arquivo SAS read_sas() caminho
refúgio Leia o arquivo STATA ler_dta() / ler_stata() caminho
refúgio Leia o arquivo SPSS ler_sav() caminho

A segunda tabela mostra as maneiras de importar uma seleção com read_excel():

função Objetivo Argumentos
leitura_excel() Leia n número de linhas n_máx = 10
Selecione linhas e colunas como no Excel faixa = “A1:D10”
Selecione linhas com índices intervalo = linhas_células (1:3)
Selecione colunas com letras intervalo = células_cols(“A:C”)

Perguntas Frequentes

O R 4.0.0 alterou o valor padrão de `stringsAsFactors` de `TRUE` para `FALSE`. As colunas de caracteres agora permanecem como caracteres. Passe o argumento explicitamente se o seu script precisar se comportar da mesma forma em versões mais antigas do R.

Substituir o URL com o caminho local completo entre aspas, como “C:/Users/nome/data.csv”. Use barras normais ou barras invertidas duplas em Windowse confirme o diretório de trabalho com getwd().

A função readxl lê arquivos .xls e .xlsx em R puro, sem... Java dependência. Somente o pacote xlsx mais antigo requer Java através de rJavaPor isso, o readxl é a opção recomendada.

Alterações silenciosas de tipo durante a importação são uma fonte comum de resultados de IA irreproduzíveis. Declarar explicitamente os tipos de coluna, conforme relatado por read_csv(), garante que um conjunto de dados de treinamento seja carregado de forma idêntica todas as vezes.

Sim. Os assistentes de IA conseguem diagnosticar separadores incorretos, problemas de codificação e cabeçalhos mal interpretados a partir de uma mensagem de erro. Sempre confirme o resultado com str() ou glimpse() antes de continuar a análise.

Resuma esta postagem com: