Pular para o conteúdo principal
InicioTutoriaisProgramação R

Leitura e importação de arquivos do Excel para o R com o readxl

Neste artigo, saiba como importar arquivos do Excel para o R com a biblioteca readxl.
abr. de 2024  · 31 min leer

Embora muitas organizações armazenem dados em bancos de dados e opções de armazenamento, como AWS, Azure e GCP, as planilhas do Microsoft Excel continuam a ser amplamente usadas para armazenar conjuntos de dados menores.

A funcionalidade de ciência de dados do Excel é mais limitada do que a do R, portanto, é útil poder importar dados de planilhas para o R.

Neste tutorial, abordaremos a leitura de planilhas do Excel (bem como de linhas e colunas específicas) no R usando o pacote readxl.

Para entender isso, você precisará de um conhecimento básico de R. 

Para obter um guia mais geral sobre a importação de vários tipos diferentes de arquivos para o R, leia How to Import Data Into R (Como importar dados para o R): Um tutorial.

O arquivo do Excel

O conjunto de dados que leremos no R é pequeno, com apenas duas planilhas, para demonstrar como especificar a planilha a ser lida. Ele pode ser encontrado aqui.

A primeira planilha é um conjunto de dados de marketing bancário com 45.211 linhas e 17 colunas. A captura de tela abaixo é do arquivo do Excel "sample.xlsx" e o nome da planilha é "bank-full".

Captura de tela 2023-03-08 at 9.05.49 PM.png

A segunda planilha é o conjunto de dados da Iris, com 150 linhas e 6 colunas, e contém informações sobre os tipos de flores da Iris, como o comprimento e a largura das sépalas e pétalas.  A captura de tela abaixo é do mesmo arquivo do Excel, "sample.xlsx" e nome de planilha "iris". 

Captura de tela 2023-03-08 at 9.08.53 PM.png

Visão geral dos pacotes

Este tutorial usa o pacote readxl. O pacote openxlsx é uma alternativa decente que também inclui a capacidade de gravar em arquivos XLSX, mas tem uma integração menos forte com os pacotes do tidyverse, como o dplyr e o tidyr.

Para ler arquivos do Excel com o pacote readxl, precisamos instalar o pacote primeiro e depois importá-lo usando a função "library".

install.packages("readxl")

Você verá a saída abaixo no console, indicando que a instalação foi bem-sucedida.

trying URL 'https://cran.rstudio.com/bin/macosx/big-sur-arm64/contrib/4.2/readxl_1.4.2.tgz'
Content type 'application/x-gzip' length 1545782 bytes (1.5 MB)
==================================================
downloaded 1.5 MB


The downloaded binary packages are in
/var/folders/mq/46mc_8tj06n0wh2xjkk08r140000gn/T//RtmpHIGYqM/downloaded_packages

Para usar os métodos "readxl", execute o comando abaixo no console do R.

library(readxl)

Observe que o pacote openxlsx é outra boa alternativa para gravar em arquivos XLSX.

Leitura do primeiro livro de exercícios

Vamos ler todos os dados da primeira planilha, "bank-full", com read_xlsx() e somente o argumento path.

bank_df <- read_xlsx(path = "sample.xlsx")

Os dados resultantes são um tibble.

Captura de tela 2023-03-09 at 7.40.15 AM.png

Você também pode usar read_excel() da mesma forma que read_xlsx(), e todos os argumentos que você verá nas próximas seções funcionam de forma semelhante com essa função. read_excel() tentará adivinhar se você tem uma planilha XLSX ou o tipo de planilha XLS mais antigo.

bank_df <- read_excel(path = "sample.xlsx")

Captura de tela 2023-03-09 às 7:40:15 AM (1).png

Leitura de outras pastas de trabalho

Agora vamos ler todos os dados da segunda pasta de trabalho, ou seja, "iris", com a função read_xlsx() e o argumento sheet.

iris <- read_xlsx("sample.xlsx", sheet = "iris")

Captura de tela 2023-03-09 at 7.12.08 AM.png

Você também pode especificar o número da planilha no argumento da planilha em vez do nome da planilha.

iris2 <- read_xlsx("sample.xlsx", sheet = 1)

Captura de tela 2023-03-09 at 7.12.21 AM.png

Leitura de linhas específicas

Vamos ler linhas específicas de uma pasta de trabalho definindo os argumentos skip e n_max. Para ignorar as primeiras linhas, você pode usar o argumento skip com um valor igual ao número de linhas que deseja ignorar.

bank_df_s2 <- read_excel("sample.xlsx", sheet = "bank-full", skip = 2)

Observe que o código acima também ignora os cabeçalhos. Nas seções seguintes, você aprenderá a especificar explicitamente os cabeçalhos na função read_xlsx().

Captura de tela 2023-03-09 at 7.17.01 AM.png

Da mesma forma, para ler as primeiras n linhas, especifique o argumento n_max na função read_xlsx(). O código abaixo lê as primeiras 1.000 linhas da planilha "bank-full".

bank_df_n1k <- read_excel("sample.xlsx", sheet = "bank-full", n_max = 1000)

Captura de tela 2023-03-09 at 7.18.41 AM.png

Você também pode combinar os dois argumentos para ignorar algumas linhas e ler um número específico de linhas do conjunto de dados restante.

Leitura de células específicas

Embora os argumentos "skip" e "n_max" permitam a leitura de um subconjunto das linhas dos dados, você pode ler células específicas de uma pasta de trabalho definindo o argumento range.

Há duas notações para especificar o subconjunto do conjunto de dados:

  • Notação A1 (E4:G8) - A representa a coluna e 1 representa o número da linha.
  • Notação R1C1 (R4C5:R8C7) - O número da linha e o número da coluna são explicitamente definidos

A ideia é especificar as coordenadas do retângulo que você deseja recortar do conjunto de dados.

Notação 1:

bank_df_range1 <- read_excel("sample.xlsx", sheet = "bank-full", range = "A3:E10")

Notação 2:

bank_df_range2 <- read_excel("sample.xlsx", sheet = "bank-full", 

                 range = "R3C1:R10C5")

O intervalo também permite que você inclua o nome da planilha no argumento (exemplo: wbook!E4:G8).

bank_df_range3 <- read_excel("sample.xlsx", range = "bank-full!R3C1:R10C5")

Leitura de dados sem linha de cabeçalho

Vamos ler os dados que não têm linha de cabeçalho, definindo o argumento col_names como um vetor de caracteres. 

PS: Estamos usando o argumento skip primeiro para remover a linha do cabeçalho.

columns <- c("ID", "Sepal Length", "Sepal Width", "Petal Length", "Petal Width", "Species Name")

iris3 <- read_excel("sample.xlsx", sheet = 2, skip = 1, col_names = columns)

Captura de tela 2023-03-09 às 7.19.30 AM.png

Reparo de nomes de cabeçalhos

Na última seção, os cabeçalhos que especificamos foram separados por espaço. Você pode transformar os nomes de cabeçalho em variáveis sintáticas do R com o argumento .name_repair = "universal".

iris4 <- read_excel("sample.xlsx", sheet = 2, skip = 1,
                  col_names = columns, .name_repair = "universal")

Captura de tela 2023-03-09 at 7.19.56 AM.png

Especificação de tipos de coluna

Por padrão, quando você lê um arquivo do Excel, o R adivinha o tipo de dados de cada variável.  Vamos observar os tipos de coluna do conjunto de dados da íris lidos usando os argumentos padrão.

sapply(iris, class)
  Id SepalLengthCm  SepalWidthCm PetalLengthCm  PetalWidthCm       Species
    "numeric"     "numeric"     "numeric"     "numeric"     "numeric"   "character" 

Para substituir as suposições de tipo de coluna, você pode usar o argumento col_types.

iris5 <- read_excel("sample.xlsx", sheet = 2,
      col_types = c("numeric", "numeric", "numeric", "numeric", "numeric", "text"))

sapply(iris5, class)
    Id SepalLengthCm  SepalWidthCm PetalLengthCm  PetalWidthCm       Species
    "numeric"     "numeric"     "numeric"     "numeric"     "numeric"   "character" 

Captura de tela 2023-03-09 às 7.20.14 AM.png

Você também pode permitir que o R adivinhe os tipos de coluna das variáveis selecionadas especificando o valor col_types como "guess" para uma determinada coluna.

iris6 <- read_excel("sample.xlsx", sheet = 2,
        col_types = c("guess", "numeric", "numeric", "numeric", "numeric", "text"))

sapply(iris6, class)
Id SepalLengthCm  SepalWidthCm PetalLengthCm  PetalWidthCm       Species
    "numeric"     "numeric"     "numeric"     "numeric"     "numeric"   "character" 

Captura de tela 2023-03-09 at 7.20.27 AM.png

Ignorando colunas

Embora muitas vezes você ouça as pessoas dizendo que quanto mais dados, melhor. Mas, em muitos casos de uso, você descobre que algumas das variáveis/colunas não contêm nenhum sinal, o que pode ser devido a qualquer um dos motivos abaixo. 

  • alta cardinalidade: quase todos os valores são diferentes
  • cardinalidade zero: todo valor é o mesmo
  • não relacionados ao caso de uso comercial
  • muitos valores ausentes
  • muitos valores de lixo eletrônico

Você pode ignorar a leitura de algumas colunas definindo col_types como "skip", conforme demonstrado abaixo.

iris7 <- read_excel("sample.xlsx", sheet = 2,
            col_types = c("numeric", "skip", "skip", "numeric", "numeric", "text"))

sapply(iris7, class)

de tela 2023-03-09 at 7.20.36 AM.pngLeve-oCaptura para o próximo nível

Em um mundo em que os dados são gerados em um ritmo enorme e em formas variadas, sua linguagem de programação deve suportar a leitura desses tipos de dados. O R é uma das linguagens poderosas que dão suporte a esse esforço. Inscreva-se no curso "Introduction to Importing Data in R" para saber como o R oferece pacotes para importar conjuntos de dados variados. Este curso oferece tutoriais e testes para reforçar sua compreensão da importação de dados no R.

Temas

Saiba mais sobre o R e as planilhas

Course

Data Analysis in Google Sheets

3 hr
14.2K
Learn to use Google Sheets to clean, analyze, and draw insights from data. Discover how to sort, filter, and use VLOOKUP to combine data.
See DetailsRight Arrow
Start Course
Ver maisRight Arrow
Relacionado

blog

Jupyter e R Markdown: Notebooks com R

Saiba como instalar, executar e usar o R com o Jupyter Notebook e o R Notebook do RStudio, incluindo dicas e alternativas
Karlijn Willems's photo

Karlijn Willems

20 min

tutorial

Tutorial do Python Excel: O guia definitivo

Saiba como ler e importar arquivos do Excel em Python, gravar dados nessas planilhas e encontrar os melhores pacotes para fazer isso.
Natassha Selvaraj's photo

Natassha Selvaraj

30 min

tutorial

Tutorial pandas read csv(): Importação de dados

A importação de dados é a primeira etapa de qualquer projeto de ciência de dados. Saiba por que os cientistas de dados atuais preferem a função read_csv() do pandas para fazer isso.
Kurtis Pykes 's photo

Kurtis Pykes

9 min

tutorial

RStudio Tutorial

Saiba o que é o RStudio e como instalá-lo e começar a usá-lo
Elena Kosourova 's photo

Elena Kosourova

17 min

tutorial

Tutorial de Pipes em R para iniciantes

Saiba mais sobre o famoso operador de pipe %>% e outros pipes no R, por que e como você deve usá-los e quais alternativas você pode considerar!
Karlijn Willems's photo

Karlijn Willems

25 min

tutorial

Criação de uma lista no R

Pratique Listas em R usando o material do curso Intro to R do DataCamp.
Ryan Sheehy's photo

Ryan Sheehy

3 min

See MoreSee More