R do zero

Do arquivo ao primeiro gráfico — sem transformar a primeira experiência em trauma.

Este guia foi pensado para quem nunca trabalhou com R ou ainda está dando os primeiros passos.

Ideia central: aprender R não é decorar comandos. É aprender a transformar perguntas em operações sobre dados.

1. Antes de começar

O que é o R?

R é uma linguagem e um ambiente voltado para:

  • organização de dados;
  • análise estatística;
  • visualização;
  • modelagem;
  • automação;
  • produção de relatórios reprodutíveis.

Ele é gratuito e de código aberto.

Pense assim: o R é o motor.

E o RStudio?

O RStudio é uma interface que facilita trabalhar com o R.

R
=
motor
+
RStudio
=
painel de controle

Você pode usar R sem RStudio, mas para quem está começando o RStudio costuma deixar o processo muito mais amigável.

Onde baixar?

1. Instalar o R

Site oficial:

https://cran.r-project.org/

Escolha seu sistema operacional:

  • Windows
  • macOS
  • Linux

2. Instalar o RStudio

Site oficial da Posit:

https://posit.co/download/rstudio-desktop/

Ordem recomendada: instale primeiro o R. Depois, instale o RStudio.

2. Conhecendo o RStudio

As quatro áreas principais

Ao abrir o RStudio, você normalmente verá quatro painéis:

Área Para que serve
Script onde você escreve e salva seus códigos
Console onde o R executa os comandos
Environment mostra objetos carregados na memória
Files / Plots / Packages / Help arquivos, gráficos, pacotes e ajuda

Regra prática: escreva no Script e execute no Console.

Seu primeiro código

2 + 2
## [1] 4

Criando um objeto:

nome <- "Tarcis"

nome
## [1] "Tarcis"

Fazendo um cálculo:

media <- mean(c(5, 7, 8, 10))

media
## [1] 7.5

Experimente: troque os números, altere o texto e rode novamente.

3. Pacotes

O que são pacotes?

Pacotes ampliam o que o R consegue fazer.

Alguns exemplos:

  • tidyverse → manipulação e visualização de dados;
  • readxl → leitura de Excel;
  • lme4 → modelos multinível;
  • sf → dados geográficos;
  • rmarkdown → relatórios como este.

Instalar pacote

A instalação normalmente é feita uma vez:

install.packages("tidyverse")

Carregar pacote

A cada nova sessão, você precisa carregar o pacote:

library(tidyverse)

Instalar ≠ carregar.
install.packages() instala no computador.
library() disponibiliza o pacote na sessão atual.

4. Organizando seu projeto

Evite a pasta “Downloads eterna”

Uma estrutura simples já ajuda muito:

meu_projeto/
│
├── dados/
├── scripts/
├── resultados/
└── figuras/

Uma organização como essa facilita:

  • encontrar arquivos;
  • repetir a análise;
  • compartilhar o projeto;
  • evitar caminhos quebrados;
  • separar dados brutos de resultados.

Onde o R está trabalhando?

getwd()
## [1] "C:/Users/tarci/OneDrive/Documents/SEMINARIO ENTRELINHAS"

Esse comando mostra o diretório de trabalho atual.

Se o seu arquivo está em outro lugar, o R precisa saber o caminho correto.

5. Importando dados

CSV

Com readr:

library(readr)

dados <- read_csv("dados/minha_base.csv")

Se o arquivo usa ; como separador:

dados <- read_csv2("dados/minha_base.csv")

Excel

library(readxl)

dados <- read_excel("dados/minha_base.xlsx")

Escolhendo uma aba:

dados <- read_excel(
  "dados/minha_base.xlsx",
  sheet = "Escolas"
)

Caminho completo

Também funciona:

dados <- read_csv(
  "C:/Users/SeuNome/Downloads/minha_base.csv"
)

No Windows, prefira usar / no caminho.
Exemplo: C:/Users/SeuNome/Downloads/base.csv

6. Conhecendo a base

Nossa base de exemplo

Neste guia vamos trabalhar com uma pequena base fictícia de escolas:

dados_escolas

Primeiras linhas

head(dados_escolas)

Nomes das variáveis

names(dados_escolas)
## [1] "escola"      "regiao"      "rede"        "ideb"        "estudantes" 
## [6] "laboratorio"

Dimensão

dim(dados_escolas)
## [1] 12  6

A saída significa:

linhas × colunas

Estrutura

glimpse(dados_escolas)
## Rows: 12
## Columns: 6
## $ escola      <chr> "Escola A", "Escola B", "Escola C", "Escola D", "Escola E"…
## $ regiao      <chr> "Nordeste", "Nordeste", "Nordeste", "Sudeste", "Sudeste", …
## $ rede        <chr> "Estadual", "Municipal", "Estadual", "Municipal", "Estadua…
## $ ideb        <dbl> 3.8, 4.1, 4.6, NA, 4.7, 5.0, 4.5, 4.9, 5.2, 3.5, NA, 4.2
## $ estudantes  <dbl> 320, 280, 410, 500, 620, 450, 360, 390, 430, 250, 300, 275
## $ laboratorio <chr> "Sim", "Não", "Sim", "Sim", "Sim", "Sim", "Não", "Sim", "S…

Resumo

summary(dados_escolas)
##     escola             regiao              rede                ideb      
##  Length:12          Length:12          Length:12          Min.   :3.500  
##  Class :character   Class :character   Class :character   1st Qu.:4.125  
##  Mode  :character   Mode  :character   Mode  :character   Median :4.550  
##                                                           Mean   :4.450  
##                                                           3rd Qu.:4.850  
##                                                           Max.   :5.200  
##                                                           NA's   :2      
##    estudantes    laboratorio       
##  Min.   :250.0   Length:12         
##  1st Qu.:295.0   Class :character  
##  Median :375.0   Mode  :character  
##  Mean   :382.1                     
##  3rd Qu.:435.0                     
##  Max.   :620.0                     
## 

Antes de analisar uma base, conheça a base.

7. Selecionar, filtrar e criar variáveis

select()

Escolhendo algumas colunas:

dados_escolas %>%
  select(
    escola,
    regiao,
    ideb
  )

filter()

Apenas escolas do Nordeste:

dados_escolas %>%
  filter(
    regiao == "Nordeste"
  )

Apenas escolas com mais de 350 estudantes:

dados_escolas %>%
  filter(
    estudantes > 350
  )

mutate()

Criando uma nova variável:

dados_escolas %>%
  mutate(
    porte = if_else(
      estudantes >= 400,
      "Maior",
      "Menor"
    )
  )

Experimente: altere 400 para 300. O que muda?

8. Resumindo dados

Média geral

dados_escolas %>%
  summarise(
    media_ideb = mean(
      ideb,
      na.rm = TRUE
    )
  )

Por região

dados_escolas %>%
  group_by(regiao) %>%
  summarise(
    n = n(),
    media_ideb = mean(
      ideb,
      na.rm = TRUE
    )
  )

Por rede

dados_escolas %>%
  group_by(rede) %>%
  summarise(
    n = n(),
    media_ideb = mean(
      ideb,
      na.rm = TRUE
    ),
    media_estudantes = mean(
      estudantes,
      na.rm = TRUE
    )
  )

9. NA: o primeiro susto de muita gente

O que é NA?

NA representa valor ausente.

dados_escolas$ideb
##  [1] 3.8 4.1 4.6  NA 4.7 5.0 4.5 4.9 5.2 3.5  NA 4.2

Se fizermos:

mean(dados_escolas$ideb)
## [1] NA

o resultado será NA.

Ignorando ausências

mean(
  dados_escolas$ideb,
  na.rm = TRUE
)
## [1] 4.45

Contando NA

sum(
  is.na(dados_escolas$ideb)
)
## [1] 2

NA não é zero. Ausência de informação é diferente de valor zero.

10. Seu primeiro gráfico

Barras

dados_escolas %>%
  count(regiao) %>%
  ggplot(
    aes(
      x = regiao,
      y = n
    )
  ) +
  geom_col() +
  labs(
    title = "Número de escolas por região",
    x = NULL,
    y = "Escolas"
  ) +
  theme_minimal()

Boxplot

ggplot(
  dados_escolas,
  aes(
    x = regiao,
    y = ideb
  )
) +
  geom_boxplot() +
  labs(
    title = "Distribuição do IDEB por região",
    x = NULL,
    y = "IDEB"
  ) +
  theme_minimal()

Dispersão

ggplot(
  dados_escolas,
  aes(
    x = estudantes,
    y = ideb
  )
) +
  geom_point(
    size = 3
  ) +
  geom_smooth(
    method = "lm",
    se = TRUE
  ) +
  labs(
    title = "Número de estudantes e IDEB",
    x = "Estudantes",
    y = "IDEB"
  ) +
  theme_minimal()

O gráfico não é o fim da análise. É uma forma de fazer perguntas aos dados.

11. Um exemplo completo

A pergunta

Há diferenças no IDEB médio entre as regiões da base?

O código

resumo_regiao <- dados_escolas %>%
  group_by(regiao) %>%
  summarise(
    n = n(),
    media_ideb = mean(
      ideb,
      na.rm = TRUE
    )
  ) %>%
  arrange(
    desc(media_ideb)
  )

resumo_regiao

Visualização

resumo_regiao %>%
  ggplot(
    aes(
      x = reorder(
        regiao,
        media_ideb
      ),
      y = media_ideb
    )
  ) +
  geom_col() +
  coord_flip() +
  labs(
    title = "IDEB médio por região",
    x = NULL,
    y = "IDEB médio"
  ) +
  theme_minimal()

O raciocínio

pergunta
→
selecionar dados
→
agrupar
→
resumir
→
visualizar
→
interpretar

12. Erros comuns

“objeto não encontrado”

Exemplo:

mean(base_escola$ideb)

Se base_escola não existe, o R reclama.

Confira:

ls()

“pacote não encontrado”

Instale:

install.packages("nome_do_pacote")

Depois carregue:

library(nome_do_pacote)

“arquivo não encontrado”

Confira:

getwd()

list.files()

“coluna não existe”

Confira:

names(dados)

Deu erro? Leia a mensagem antes de apagar tudo. 😅

13. Alguns hábitos que ajudam muito

  1. Salve seus comandos em um script.
  2. Use nomes simples para objetos.
  3. Evite espaços nos nomes de arquivos.
  4. Organize o projeto em pastas.
  5. Comente seu código.

Exemplo:

# Média do IDEB por região
resumo <- dados %>%
  group_by(regiao) %>%
  summarise(
    media_ideb = mean(
      ideb,
      na.rm = TRUE
    )
  )
  1. Não sobrescreva a base original sem necessidade.
  2. Confira resultados intermediários.
  3. Guarde as decisões metodológicas junto do código.

14. Desafio final

Sua vez. Usando a base dados_escolas, tente responder:

Pergunta 1

Quantas escolas possuem laboratório?

Pergunta 2

Qual é o IDEB médio entre escolas com e sem laboratório?

Pergunta 3

Crie um gráfico comparando os dois grupos.

Clique aqui para ver uma solução possível
dados_escolas %>%
  count(laboratorio)
dados_escolas %>%
  group_by(laboratorio) %>%
  summarise(
    media_ideb = mean(
      ideb,
      na.rm = TRUE
    )
  )
dados_escolas %>%
  ggplot(
    aes(
      x = laboratorio,
      y = ideb
    )
  ) +
  geom_boxplot() +
  labs(
    title = "IDEB segundo presença de laboratório",
    x = "Laboratório",
    y = "IDEB"
  ) +
  theme_minimal()

15. Como continuar

R para Ciência de Dados

Livro gratuito em português:

https://pt.r4ds.hadley.nz/

Posit Cheatsheets

Resumos visuais de vários pacotes:

https://posit.co/resources/cheatsheets/

Documentação do tidyverse

https://www.tidyverse.org/

RStudio Education

https://education.rstudio.com/

Não tente aprender “todo o R”. Aprenda o próximo comando de que sua pergunta precisa.

16. E depois do primeiro gráfico?

O R é ferramenta.

A pesquisa começa quando os comandos passam a responder uma pergunta educacional.

Do dado à pergunta. Da pergunta ao dado.

O objetivo não é produzir código bonito. É produzir análises que façam sentido.

Prof. Me. Tarcis Teles Xavier da Silva
Doutorando em Ensino de Ciências e Matemática
PPGEC/UFRPE

Seminários EntreLinhas • 23/09/2026