R para ciência de dados

Principais conceitos de importação e manipulação de dados

1 Introdução

A ciência de dados é um campo vasto, e não é possível dominá-la lendo apenas um único livro. Este material tem como objetivo fornecer uma base sólida nas ferramentas mais importantes e conhecimento suficiente para que você possa encontrar os recursos necessários para aprender mais quando for preciso.

O nosso modelo das etapas de um projeto típico de ciência de dados se parece com a Figura 1. Neste modelo, você começa com a importação e organização dos dados. Em seguida, você entende seus dados por meio de um ciclo iterativo de transformação, visualização e modelagem. Você finaliza o ciclo comunicando seus resultados para outras pessoas.

Este documento focará nas etapas iniciais e cruciais desse processo: Importação e Manipulação (Organização) de Dados no R.

  • A Importância da Importação: Primeiro, você deve importar seus dados para o R. Isso geralmente significa que você pega dados armazenados em um arquivo, um banco de dados ou uma API (interface de programação de aplicação) e importa-os em uma tabela (data frame) no R.

  • A Importância da Organização: Depois de importar seus dados, é uma boa ideia organizá-los. Organizar seus dados significa armazená-los em uma forma consistente que corresponda à semântica do conjunto de dados com a forma como ele é armazenado.

2 Importação e Manipulação de dados

2.1 Importação de Dados

A primeira etapa crucial em um projeto de ciência de dados é a Importação de Dados. Isso significa trazer os dados armazenados em fontes externas (como arquivos, bancos de dados ou APIs) para um objeto manipulável no R, tipicamente um data frame. O R possui diversos pacotes e funções para lidar com diferentes formatos de arquivos.

2.1.1 read_xlsx()

A função read_xlsx() é proveniente do pacote readxl e é utilizada para importar dados de arquivos Microsoft Excel no formato .xlsx. O argumento sheet permite escolher qual aba importar, sendo o uso do nome da aba mais robusto do que o número.

Argumento fundamental: path. Especifica o caminho e o nome do arquivo Excel. Caso esteja trabalhando com um projeto o diretório não precisa ser especificado, somente o nome do arquivo. Abaixo são apresentados alguns exemplos.

>Exemplo de Código (Importando de Excel):

# Importa a aba 1 (Janeiro)

voos_de_janeiro <- read_xlsx(path = 'voos_trimestre.xlsx',
                             sheet = 1)

# Importa a aba 2 (Fevereiro)

voos_de_fevereiro <- read_xlsx(path = 'voos_trimestre.xlsx',
                               sheet = 2)

# Importa a aba pelo seu nome (prática recomendada)

voos_de_marco <- read_xlsx(path = 'voos_trimestre.xlsx',
                           sheet = 'voos_de_marco')

2.1.2 read_delim()

A função read_delim() é proveniente do pacote readr e é usada para importar arquivos de texto delimitados como CSV, permitindo a especificação explícita do delimitador.

Argumentos essenciais: file. Especifica o caminho e o nome do arquivo. delim define o caractere delimitador.

>Exemplo de Código (Importando com Delimitador)


# Usando read_delim com o delimitador explícito

voos_de_janeiro <- read_delim(file = 'voos_de_janeiro.csv',
                               delim = ';')

2.1.3 read_sheet()

A função read_sheet() é proveninete do pacote googlesheets4 permite a importação direta de planilhas do Google Sheets.

Argumento fundamental: ss. Usado para identificar a planilha do Google Sheets (URL do Documento).

>Exemplo de Código (Importando do Google Sheets)

# É necessário autenticar a sessão do Google Sheets primeiro.
# Documentos em outros formatos devem ser converstidos no formato do Google Sheets

dados_gs <- read_sheet(ss = "url_da_sua_planilha")

2.2 Resumo dos Argumentos de Importação

Argumento Função Associada Descrição
path read_xlsx() Caminho e nome do arquivo Excel (.xlsx).
file read_delim() Caminho e nome do arquivo de texto (ex: .csv).
delim read_delim() Caractere delimitador que separa as colunas (ex: ‘;’ ou ‘,’).
ss read_sheet() URL da planilha do Google Sheets.

2.3 Funções rbind() e cbind()

rbind(): Funções que empilha linhas de diferentes tabelas.

cbind(): Funções que empilha lateralmente as tabelas (adicionando colunas).

Exemplo de Código (rbind()):


# rbind() empilha linhas de diferentes tabelas
voos_trimestre <- rbind(voos_de_janeiro,
                        voos_de_fevereiro,
                        voos_de_marco)

2.4 Estrutura e Dimensões dos Dados

Funções essenciais para obter uma noção geral da amostra de dados.

2.4.1 Dimensões

Quantas colunas (variáveis) a tabela possui.

ncol()

ncol(voos_trimestre)


Quantas linhas (observações) a tabela possui.

nrow()

nrow(voos_trimestre)
    

Retorna as dimensões (linhas, colunas) da tabela.

dim()

dim(voos_trimestre)

2.4.2 Visualização e Estrutura

#Exibe as primeiras informações (linhas) da tabela.

head()

head(voos_trimestre)
    

# Exibe as últimas informações (linhas) da tabela.

tail()

tail(voos_trimestre)
    

# Exibe a estrutura interna do objeto e o tipo de dados das variáveis.

str()

str(voos_trimestre)

Exportar para as Planilhas

2.5 Seleção e Subconjuntos

A seleção de subconjuntos permite isolar elementos específicos da tabela, usando a sintaxe objeto[linhas, colunas].

2.5.1 Seleção por Índice (Posição)

Exemplo de Código (Seleção por Índice):

# Selecionando o primeiro valor da quinta coluna
voos_trimestre[1,5] 

# Selecionando os 3 primeiros valores da quinta coluna
voos_trimestre[c(1,2,3), 5] 

# Selecionando os 5 primeiros valores das colunas 5 à 8
voos_trimestre[1:5, 5:8] 

# Selecionando todos os valores da coluna 5
voos_trimestre[,5] 

2.5.2 Seleção por Nome de Coluna

O operador $ é o método padrão para selecionar uma única coluna pelo nome.

Exemplo de Código (Seleção por Nome):

# Selecionando todos os valores da coluna 'distancia'
voos_trimestre$distancia

2.6 Funções Estatísticas Básicas

Funções prontas para obter estatísticas descritivas de vetores numéricos.

#Menor valor da amostra. 

min()

min(voos_trimestre$distancia)


#Maior valor da amostra.

max()   

max(voos_trimestre$distancia)


#Média de valores da amostra.

mean()  

mean(voos_trimestre$distancia)


#Desvio padrão da amostra.

sd()    

sd(voos_trimestre$distancia)


#Mediana de valores da amostra.

median()    

median(voos_trimestre$distancia)


#Arredonda valores.

round() 

round(mean(voos_trimestre$distancia), digits = 2)

2.7 Comparações Lógicas

Operadores que resultam em um valor lógico (TRUE ou FALSE), essenciais para filtrar dados.

2.7.1 Funções de Classe e Data

class(): Retorna a classe ou tipo do objeto.

Sys.Date(): Retorna a data atual do sistema.

Exemplo de Código:

class(10)
class('Fluminense')
Sys.Date()
class(Sys.Date())
class(TRUE)

Resultados

## [1] "numeric"
## [1] "character"
## [1] "2025-10-29"
## [1] "Date"
## [1] "logical"

2.7.2 Operadores de Comparação

Operadores e 

-   Maior que '>'

  x > 10
  
-   Menor que '<'

  x < 10
  

- Igual a '==', Operador lógico, não usado para atribuição de valor a variável.

  x == 10
    
- Diferente de '!='

  x != 10

-   Maior ou igual que '>='

  x >= 10

-   Menor ou igual que '<='

  x <= 10

- Está contido em um vetor '%in%'   

  x %in% c(9,10,11)
    
- Negação (NOT) '!'

  !TRUE

2.7.2.1 Filtragem Lógica

O resultado de uma comparação é usado dentro dos colchetes para selecionar as linhas que satisfazem a condição.

Exemplo de Código (Filtrando Linhas):

# Selecionando todas as linhas onde a 'distancia' é maior ou igual à média
trimestre_maior_distancia <- voos_trimestre[voos_trimestre$distancia >= 1006.869,]

2.8 Operadores Compostos

Permitem combinar múltiplas condições lógicas.

2.8.1 Regra do E (&)

Retorna TRUE apenas se todas as condições forem verdadeiras.

Exemplo de Código (Operador E):

# Filtra voos onde a distância é maior que 1000 E o dia do voo é o dia 1
voos_trimestre[voos_trimestre$distancia > 1000 & voos_trimestre$dia == 1,]

2.8.2 Regra do OU (|)

Retorna TRUE se pelo menos uma das condições for verdadeira.

Exemplo de Código (Operador OU):

# Filtra voos que são muito longos OU aconteceram no dia 31
voos_trimestre[voos_trimestre$distancia > 4000 | voos_trimestre$dia == 31,]