Introdução à análise de dados em ambiente R

Autor
Afiliação

R. O. Perdiz

PRONAT - UFRR | CBIO - UFRR

Data de Publicação

17 set 2025

NotaInformes

Última atualização: 2025-09-18.

Código fonte: https://github.com/ricoperdiz/2025_analiseDadosR_SemanaBioCBIO.

Adições

  • Inserção do ggplot2 na Seção 4.

  • Inserção de uma seção curta sobre a função de ajuda do R (== ?).

Apresentação

Bem-vindos ao mundo do R!

O R é uma linguagem de programação desenhada para a análise de dados.

Neste minicurso, apresentaremos resumidamente comandos básicos em R que cobrem quase todo o ciclo da análise de dados (Figura 1). Nosso intuito é demonstrar o poder do R enquanto ferramenta para a análise de dados. Oferecemos então uma introdução à importação de dados, checagem e transformação de dados, manipulaçao

Figura 1: Ciclo da análise de dados. Neste curso, não abordaremos a modelagem de dados. Fonte: Curso-R, disponível em https://livro.curso-r.com/assets/img/manipulacao/ciclo-ciencia-de-dados.png.

Por que R?

View slides in full screen


🔰 Básico em R

Vamos começar com alguns comandos básicos. Para atribuir dados a uma variável, isto é, criar variáveis, podemos utilizar os operadores <- ou =. Vejam abaixo:

Podemos fazer operações matemáticas e guardar resultado das operações em objetos.

Ver o conteúdo de um objeto

Para ver o conteúdo de um objeto, basta digitar seu nome e rodar o código. Por exemplo, para ver a soma, que está no objeto soma, fazemos assim:

Concatenando elementos com a função c()

Podemos concatenar elementos utilizando a função c(). Chamamos esse conjunto de elementos de vetores:

Acima, criamos os vetores numeros e letras. Reparem que em letras adicionamos letras do alfabeto entre aspas "". Devemos fazer isso toda vez que desejarmos guardar texto em um objeto.

Criar tabelas com a função data.frame()

Podemos criar tabelas, que no R chamamos de data.frame. Cada coluna precisa ser um vetor (criado com a função c()). A função data.frame() junta esses vetores, criando uma tabela.

Em nosso exemplo exposto abaixo, os argumentos ID, Nome e Idade representam os nomes das colunas de nossa tabela, guardada no objeto dados_exemplo:

Podemos ver o conteúdo de dados_exemplo também simplesmente executando o nome do objeto:

Pacotes de R

Pacotes em R são conjuntos de funções ou conjuntos de dados. Utilizamos a função install.packages() para instalar esses pacotes. Neste curso, faremos uso dos pacotes dplyr (Wickham et al. 2023), palmerpenguins (Horst, Hill, e Gorman 2020), e ggplot2 (Wickham 2016). Primeiro, devemos instalar os pacotes. Em seguida, carregamos os pacotes de interesse para nossos objetivos.

Importanteinstall.packages() VS. library()

Instalamos pacotes R uma vez apenas, para cada versão de R que tivermos instalado no computador. Por outro lado, a cada sessão nova de R, devemos carregar os pacotes utilizando a função library(), de forma que as funções dos pacotes estejam disponíveis na sessão.

A função install.packages() é como instalar um aplicativo no seu celular: você faz uma vez. O library() é como abrir esse aplicativo para usá-lo: você precisa fazer isso em cada nova sessão que iniciar.

O pacote dplyr inaugurou uma nova sintaxe em R (ver a postagem O que é o Tidyverse para mais informações), que permite a manipulação de dados tabulares de maneira mais prática e com mais clareza ao usuário.

O ggplot2 (Wickham 2016) é a ferramenta de visualização mais popular em R e será utilizada neste minicurso. Ele segue uma “gramática de gráficos”, em que você constrói o gráfico em camadas.

Por sua vez, o pacote palmerpenguins (Horst, Hill, e Gorman 2020) oferece um conjunto de dados referente à morfologia de três espécies de pinguins que ocorrem no [arquipélago de Palmer](https://en.wikipedia.org/wiki/Palmer_Archipelagono noroeste da península Antártica.

install.packages(c("dplyr", "palmerpenguins", "ggplot2"))

Agora carregaremos o pacote por meio da função library(). Devemos inserir o nome do pacote que queremos carregar entre os parênteses, com ou sem aspas.

library("dplyr")
library("palmerpenguins")
library("ggplot2")

🧳 Importando dados 🎲

Para a análise de dados, precisamos carregar dados 😄😄😄. Existem diversas maneiras de importar dados ao R. Importaremos um arquivo CSV referente ao pacote R palmerpenguins (Horst, Hill, e Gorman 2020).

Quando executamos os dados lidos pela função read.table(), podemos acabar vendo muita coisa, o que pode acabar incomodando. Desta forma, pode-se utilizar a função head() para ver apenas as primeiras seis linhas da tabela.

DicaDiferença entre read.csv() e read.table()

O R possui diferentes funções para ler tabelas:

  • read.csv() é uma forma simplificada de read.table() já configurada para ler arquivos separados por vírgula (,) e com ponto (.) como separador decimal.

  • read.table() é mais flexível, permitindo ajustar separador (sep) e símbolo decimal (dec).

Inspeção básica - head(), tail(), str(), summary() e glimpse()

Agora que os dados foram lidos, vamos inspecioná-los. Para ver as primeiras linhas/valores de um objeto, utilizamos a função head():

Para observar os últimos valores, utilizamos a função tail():

Podemos utilizar a função dplyr::glimpse() para ver a estrutura dos dados:

Além de dplyr::glimpse(), duas funções muito úteis para inspecionar dados são:

  • str(): mostra a estrutura do objeto.

  • summary(): gera um resumo estatístico das variáveis numéricas e uma contagem das categorias.


🧹 Limpeza e checagem de dados 👀

Dados do mundo real raramente são perfeitos. Precisamos limpá-los.

  • Dados ausentes (NA): Verificando e lidando com valores NA.

  • Tipos de colunas: Garantindo que cada coluna tenha o tipo de dado correto (numérico, texto, etc.).

Dados ausentes

Removendo linhas com NA

Para remover todas as linhas que apresentarem valoes ausentes, podemos utilizar a função na.omit().

Agora checamos os dados após a remoção das linhas com dados ausentes:

Renomear colunas

Podemos renomear colunas utilizando a função dplyr::rename():

Veja agora o resultado da renomeação das colunas:

Transformação de tipos de dados/colunas

Às vezes, uma coluna que deveria ser numérica (por exemplo, com números) é lida como um texto. Isso pode acontecer quando a coluna tem algum valor não numérico, como um caractere especial ou um espaço.

Para resolver, podemos converter o tipo de dado. Por exemplo, vamos transformar a coluna body_mass_g para o tipo numérico usando a função as.numeric():

DicaAjuda para entender quais são os argumentos de uma função

O R possui uma função, chamada ajuda “help”, que deve ser utilizada para obtermos informação sobre o que uma função executa. Para obter essa ajuda, devemos pegar a função e executá-la da seguinte forma:

?read.table
?na.omit
?c

Ao utilizar o ? junto ao nome de uma função, sem os parênteses, uma janela se abre contendo várias informações úteis referentes ao que aquela determinada função faz. Teste aí!

Prática I: o básico na ponta dos dedos

Explore agora as lições dadas até então.

Agora é sua vez: crie um vetor chamado idades contendo os valores 20, 25, 30, 35. Some 10 a cada idade e verifique o resultado.


🛠️ Manipulação e transformação de dados 🪛

Utilização do pipe |>

O R desde a versão 4.1.0 permite a utilização do operador |>, popularmente chamado de pipe (cano, em tradução literal), que permite o encadeamento de ações na linguagem. Isso serve apenas para facilitar a leitura do código. Assim lemos o código da esquerda para a direita.

Por exemplo, usando os exemplos anteriores, poderíamos fazer uso do pipe da seguinte maneira:

Reparem que o resultado é o mesmo apresentado na Seção 5.1.

O verdadeiro poder do pipe |> aparece quando encadeamos múltiplas operações em sequência. Isso nos permite realizar uma análise completa em poucas linhas de código, mantendo a lógica clara.

Exemplo

Vamos filtrar os pinguins da espécie Adelie, selecionar a coluna de massa corporal, remover os valores ausentes e, por fim, calcular a média

Veja como o |> torna essa sequência de passos fácil de ler:

Dica|> funciona como um cano!

Pense no |> como um cano que ‘passa’ o resultado do comando anterior para a próxima função. Isso nos permite ler o código da esquerda para a direita, como uma sequência de passos.

Sem o pipe, o mesmo processo seria mais complexo e difícil de ler, pois uma função ficaria aninhada dentro da outra:

O |> transforma essa sintaxe confusa em uma sequência lógica de comandos.

Pacote dplyr

  • select(): Escolhe colunas.
  • filter(): Filtra linhas.
  • mutate(): Cria novas colunas ou altera existentes.
  • group_by() e summarize(): Agrupa dados para fazer resumos.

Filtrando pinguins com barbatanas maiores que 200 mm:

🧠 Microdesafio

Filtre apenas os pinguins da ilha Dream:

Seleção de colunas - dplyr::select()

Podemos selecionar colunas com a função select():

Criação de novas colunas - dplyr::mutate()

Para criar novas colunas, usamos a função mutate().

Podemos fazer isso baseados em condições. Por exemplo, a função case_when() é ótima para aplicar várias regras, enquanto o ifelse() é mais simples e ideal para regras de ‘se isso, então aquilo’.

Agrupamento e sumarização de dados - group_by() e summarise()

Podemos agrupar os dados por qualquer variável e fazer sumários estatísticos, úteis na análise exploratória de dados. Para agrupar os dados, utilizamos a função group_by(); e para sumarizar, utilizamos a função summarise().

A função summarise() é incrivelmente poderosa para resumir seus dados. Além de calcular a média (mean()), podemos usar várias outras funções estatísticas para obter uma visão mais completa de cada grupo.

Imagine que queremos entender não apenas a média, mas também a variabilidade dos dados. Podemos calcular o desvio padrão (sd()), o valor mínimo (min()) e o máximo (max()) do comprimento da barbatana por espécie.

Dicana.rm = TRUE

O na.rm = TRUE que você vê dentro das funções mean(), sd(), min() e max() significa ‘remova os valores NA (valores ausentes) antes de fazer o cálculo’. Isso evita erros e garante que a função opere apenas com os dados disponíveis.

Simplificando contagens com count()

A função count() do pacote dplyr é a maneira mais simples e direta de realizar contagens por grupos. É uma ferramenta essencial na análise exploratória.

Enquanto summarise() pode ser usado para contar, a função count() foi feita para essa tarefa, tornando o código mais simples e intuitivo. Ela automaticamente agrupa os dados e conta a frequência de cada categoria.

Por exemplo, se quisermos saber a quantidade de pinguins de cada espécie em cada ilha, basta usar count() e especificar as colunas:

É uma maneira rápida e elegante de resumir a distribuição dos dados categóricos.

Prática II: manipulando dados 💾

Explore agora o que fizemos até o momento: selecionar colunas, renomear algumas, criar novas colunas:


📈 Visualização de dados 📊

O pacote ggplot2 (Wickham 2016) uma “gramática de gráficos”, em que você constrói o gráfico em camadas. As funções básicas do pacote, nesta ordem, são:

  • ggplot(): Define os dados e a estética (aes()).

  • geom_*: Adiciona as camadas geométricas (pontos: geom_point(); barras: geom_col(); linhas: geom_line()).

Façamos um histograma do comprimento do bico dos pinguins:

Visualizando relações entre variáveis

Gráfico de dispersão entre comprimento de barbatana (flipper_length_mm) e massa corporal (body_mass_g)


Explorando relações complexas

Podemos adicionar mais variáveis aos nossos gráficos usando a estética.

  • color: Mapeia uma variável categórica para a cor.

  • facet_wrap() e facet_grid(): Cria sub-gráficos para cada categoria.

Gráficos de facetas

As facetas facilitam a visualização de dados por grupos. Há duas funções que produzem as facetas:

  • facet_wrap(), quando você quer visualizar dados por apenas uma variável;

  • facet_grid(), que deve ser utilizada quando você quer ver a combinação entre duas variáveis.

Gráfico de barras com geom_col()

Além de histogramas e dispersões, gráficos de barras são muito úteis:

Prática III: visualizando relações

Agora é a sua vez de testar. Use o espaço abaixo para selecionar váriaveis e plotar. Se você não lembrar do nome das variáveis, use as funções str() ou dplyr::glimpse() para relembrar, checando assim a estrutura dos dados.

🧠 Desafio relâmpago 🌩️

Filtre apenas os pinguins da espécie Adelie e faça um gráfico de dispersão entre flipper_length_mm e body_mass_g. Use cores diferentes para cada ilha.

Conclusão e próximos passos

Parabéns! Você concluiu este minicurso introdutório. Vimos (quase) o ciclo completo da análise de dados: importação, limpeza, transformação e visualização.

Onde seguir a partir daqui?

  • Aprofundar-se na linguagem R: Buscar dominar a linguagem. Há muita literatura disponível (Vicentini e Perdiz 2021).

  • Modelagem Estatística: Aprenda a construir modelos de regressão, etc.

  • Machine Learning: Mergulhe em algoritmos de previsão.

  • Comunicação: Aprenda a criar dashboards interativos com pacotes como o Shiny.

Exercício prático

Tente aplicar o que aprendeu em um novo conjunto de dados.

Referências citadas

Horst, Allison Marie, Alison Presmanes Hill, e Kristen B Gorman. 2020. palmerpenguins: Palmer Archipelago (Antarctica) penguin data. https://doi.org/10.5281/zenodo.3960218.
Vicentini, Alberto, e Ricardo Oliveira Perdiz. 2021. Curso básico de introdução à linguagem R. https://intror.netlify.app.
Wickham, Hadley. 2016. ggplot2: Elegant Graphics for Data Analysis. New York: Springer-Verlag. https://ggplot2.tidyverse.org.
Wickham, Hadley, Romain François, Lionel Henry, Kirill Müller, e Davis Vaughan. 2023. dplyr: A Grammar of Data Manipulation. https://dplyr.tidyverse.org.