Este documento apresenta um guia sobre os principais conceitos de importação e manipulação de dados em R, conforme os conteúdos estudados em aula. Serão abordadas funções e pacotes importantes no fluxo de análise de dados, desde a leitura de arquivos externos até operações básicas de exploração e transformação dos dados. Cada tópico inclui explicações objetivas, exemplos de código e dicas extras que vão além do solicitado.
A importação de dados é o primeiro passo em qualquer análise, pois precisamos trazer os dados de fontes externas para o ambiente R. Existem diversos pacotes no R que facilitam a leitura de diferentes formatos de arquivo. Aqui destaco três pacotes populares para importação: readxl, readr e googlesheets4, cada um voltado para um tipo de fonte de dados (planilhas Excel, arquivos de texto delimitado e planilhas do Google, respectivamente). A seguir, será mostrado o uso de cada um, incluindo suas funções principais e argumentos-chave:
read_xlsx()O pacote readxl fornece funções para ler arquivos do Excel
diretamente no R. A função read_xlsx() é utilizada para importar
planilhas no formato .xlsx para um data frame, sem
necessidade de abrir o Excel ou exportar para CSV. Essa função é
especialmente útil para ler dados de fontes do Excel de forma rápida e
sem depender de bibliotecas externas. (ela não requer nem o Excel
instalado).
Principais argumentos da função read_xlsx():
| Argumento | Descrição |
|---|---|
| path | Caminho do arquivo .xlsx a ser importado. Pode ser um caminho absoluto ou relativo no sistema de arquivos. |
| rsheet | Nome ou índice (número) da aba da planilha a ser lida. Por padrão, se não especificado, a primeira aba será importada. |
| range | Intervalo de células a ler, opcional, no formato Excel
(por exemplo, A1:C10 para ler do A1 até C10). Útil para ler
apenas uma parte da planilha. |
| col_types | Permite especificar manualmente o tipo de cada coluna
(ex.: text, numeric, date etc.),
caso queiramos forçar ou garantir tipos específicos. |
Instalação e carregamento do pacote:
install.packages("readxl")
library(readxl)
Importando uma planilha Excel:
dados_excel <- read_xlsx(path = "dados.xlsx", sheet = 1)
EXEMPLOS:
read_delim()O pacote readr (parte do tidyverse) é voltado para importação arquivos de texto delimitado, como arquivos CSV, ou outros formatos similares. A função genérica read_delim() permite ler arquivos com qualquer delimitador especificado. Além dela, o readr também oferece funções especializadas como read_csv() (delimitador padrão vírgula), read_csv2() (padrão ponto-e-vírgula), read_tsv() (tabulação), etc., que na prática são casos particulares de read_delim().
Principais argumentos da função read_delim():
| Argumento | Descricao |
|---|---|
| file | Caminho e nome do arquivo de texto a ser lido. Pode ser um caminho local ou uma URL. |
| delim | Caractere utilizado como delimitador de colunas no arquivo (por exemplo: ‘,’, ‘;’, ’). |
| col_types | Especifica manualmente os tipos de cada coluna, quando necessário (por exemplo, garantir que uma coluna seja numérica ou de texto). |
| locale | Permite ajustar configurações regionais, como encoding (UTF-8), separador decimal, formato de datas etc. |
Instalação e carregamento do pacote:
Importando arquivos de texto delimitado:
# CSV com vírgula como delimitador
dados_csv <- read_delim(file = "dados.csv", delim = ",")
# CSV com ponto-e-vírgula
dados_csv2 <- read_delim(file = "dados2.csv", delim = ";")
# Arquivo separado por tabulação (TSV)
dados_tsv <- read_delim(file = "dados.tsv", delim = "\t")EXEMPLOS:
read_sheet()O pacote googlesheets4 permite ler dados diretamente
de planilhas hospedadas no Google Sheets, sem a
necessidade de download manual.
A função read_sheet() acessa a planilha
online (utilizando URL ou ID) e traz os dados para o R.
Principais argumentos da função read_sheet():
| Argumento | Descricao |
|---|---|
| ss | Identificação da planilha no Google Sheets. Pode ser fornecido como URL completo ou apenas o ID da planilha. |
| sheet | Nome ou índice da aba da planilha a ser lida. Se não especificado, normalmente a primeira aba é utilizada. |
| range | Intervalo de células a ser lido (por exemplo, ‘A1:D20’). Opcional, utilizado para importar apenas parte da planilha. |
Instalação e carregamento do pacote:
Autenticação e leitura de planilha:
# Autenticação (necessária na primeira utilização)
gs4_auth()
# Leitura de uma planilha (URL fictícia de exemplo)
dados_google <- read_sheet(
ss = "https://docs.google.com/spreadsheets/d/SEU_ID_AQUI/edit#gid=0",
sheet = "Página1"
)EXEMPLOS:
library(googlesheets4)
gs4_auth()
dados_google <- read_sheet(
ss = "https://docs.google.com/spreadsheets/d/SEU_ID_AQUI/edit#gid=0",
sheet = "Página1"
)
head(dados_google)rbind()A função rbind() empilha data frames
por linha, isto é, adiciona as linhas de um data frame
abaixo das linhas de outro.
É necessário que as colunas sejam compatíveis (mesmos nomes e tipos, em
geral).
| Funcao | Descricao |
|---|---|
| rbind() | Empilha linhas de dois ou mais data frames, exigindo compatibilidade de colunas (nomes e tipos). |
EXEMPLOS:
cbind()A função cbind() adiciona colunas lado
a lado, isto é, combina objetos por coluna.
É necessário que o número de linhas seja o mesmo em todos os objetos a
serem combinados. Os objetos podem ser data frames, vetores, etc.
EXEMPLOS:
dados1 <- data.frame(a = 1:3)
dados2 <- data.frame(b = c("X", "Y", "Z"))
dados_combinados <- cbind(dados1, dados2)
dados_combinadosPara entender o tamanho e a estrutura de um conjunto de dados, utilizamos funções que retornam o número de linhas, colunas e um resumo das variáveis.
Principais funções para explorar estrutura e dimensões:
| Funcao | Descricao |
|---|---|
| ncol() | Retorna o número de colunas de um objeto (data frame, matriz etc.). |
| nrow() | Retorna o número de linhas de um objeto. |
| dim() | Retorna um vetor com as dimensões (n_linhas, n_colunas). |
| head() | Mostra as primeiras linhas do objeto (por padrão, 6 linhas). |
| tail() | Mostra as últimas linhas do objeto (por padrão, 6 linhas). |
| str() | Exibe a estrutura do objeto, incluindo tipos de variáveis e exemplos de valores. |
EXEMPLOS:
df <- mtcars
ncol(df) # número de colunas
nrow(df) # número de linhas
dim(df) # dimensões (linhas, colunas)
head(df, 5) # primeiras 5 linhas
tail(df, 3) # últimas 3 linhas
str(df) # estrutura do data frameA seleção de colunas e linhas pode ser feita por nome, por posição ou por condições lógicas.
Resumo das formas de e criação de subconjuntos:
| Tipo | Exemplo |
|---|---|
| Coluna por nome | df$ mpg ou df[[‘mpg’]] |
| Coluna por índice | df[, 1] # primeira coluna |
| Linhas por índice | df[1:5, ] # linhas 1 a 5 |
| Linhas por condição | df[df$mpg > 20, ] # linhas em que mpg > 20 |
EXEMPLOS:
df <- mtcars
# Seleção de colunas
df$mpg
df[["hp"]]
df[, c("mpg", "hp")]
# Seleção de linhas por índice
df[1:5, ] # primeiras 5 linhas
# Seleção condicional (filtro lógico)
df[df$mpg > 20 & df$cyl == 4, ] # carros com mpg > 20 e 4 cilindrosFunções básicas para sumarizar vetores numéricos:
| Funcao | Descricao |
|---|---|
| min() | Retorna o valor mínimo de um vetor. |
| max() | Retorna o valor máximo de um vetor. |
| mean() | Calcula a média aritmética. |
| sd() | Calcula o desvio padrão amostral. |
| median() | Retorna a mediana (valor central). |
| round() | Arredonda um número para um determinado número de casas decimais. |
EXEMPLOS:
v <- c(2, 5, 7, NA, 3, 10)
min(v) # retorna NA
min(v, na.rm = TRUE) # ignora NAs
max(v, na.rm = TRUE)
mean(v, na.rm = TRUE)
sd(v, na.rm = TRUE)
median(v, na.rm = TRUE)
media_v <- mean(v, na.rm = TRUE)
round(media_v, 2)Operadores de comparação retornam valores lógicos (TRUE
ou FALSE).
Principais operadores:
| Operador | Descricao |
|---|---|
| > | Maior que. |
| < | Menor que. |
| == | Igual a. |
| != | Diferente de. |
| >= | Maior ou igual a. |
| <= | Menor ou igual a. |
| %in% | Pertence a um conjunto (verifica se elemento está em um vetor). |
| ! | Negação lógica (inverte TRUE/FALSE). |
Funções auxiliares importantes:
class() – informa a classe de um objeto;Sys.Date() – retorna a data atual do sistema.EXEMPLOS:
x <- 10
x > 5 # TRUE
x < 5 # FALSE
x == 10 # TRUE
x != 7 # TRUE
x >= 10 # TRUE
x <= 9 # FALSE
v <- c(10, 20, 30, 40)
v > 20
v %in% c(10, 30, 50)
!(v == 20)
class(10)
class("texto")
class(mtcars)Operadores compostos permitem combinar condições lógicas:
& – E lógico (ambas as condições devem ser
verdadeiras);| – OU lógico (pelo menos uma condição deve ser
verdadeira).Resumo:
| Operador | Descricao |
|---|---|
| & | E lógico: a expressão resulta TRUE apenas se ambas as condições forem TRUE. |
| | | OU lógico: a expressão resulta TRUE se pelo menos uma das condições for TRUE. |
EXEMPLOS:
df <- mtcars
# E lógico: mpg > 20 E cyl == 4
df[df$mpg > 20 & df$cyl == 4, ]
# OU lógico: hp > 100 OU wt > 3.5
df[df$hp > 100 | df$wt > 3.5, ]Ao importar dados, alguns cuidados ajudam a evitar problemas de acentuação, tipos incorretos de variáveis e valores perdidos.
Boas práticas gerais na importação de dados, principais pontos:
| Aspecto | Dica |
|---|---|
| Encoding | Verificar se o arquivo está em UTF-8, Latin1 etc. e
ajustar com o argumento locale() em readr. |
| Delimitador | Confirmar se o arquivo usa vírgula, ponto-e-vírgula ou
tabulação, e ajustar o argumento delim. |
| Separador decimal | Arquivos em português muitas vezes usam vírgula como separador decimal; isso afeta leitura numérica. |
| Tipos de colunas | Quando necessário, especificar col_types
para evitar que números sejam lidos como texto, e vice-versa. |
| Valores especiais | Identificar códigos como -999, 9999, ou strings específicas e convertê-los para NA após a importação. |
EXEMPLOS:
library(readr)
# Ajustando encoding e separador decimal em um CSV
dados <- read_delim(
file = "dados_portugues.csv",
delim = ";",
locale = locale(encoding = "Latin1", decimal_mark = ",")
)
# Especificando tipos de colunas manualmente
dados_tipos <- read_delim(
file = "dados_mistos.csv",
delim = ",",
col_types = cols(
id = col_integer(),
nome = col_character(),
salario = col_double()
)
)NA)Muitos arquivos possuem valores faltantes que prejudicam cálculos se não forem tratados.
Ações comuns para tratamento de valores faltantes (NA):
| Ação | Exemplo |
|---|---|
| Identificar NAs | is.na(x) retorna TRUE onde x é NA. |
| Ignorar NAs em cálculos | Funções como mean(), sd() aceitam o argumento na.rm = TRUE. |
| Remover linhas com NAs | na.omit(df) remove linhas que possuem qualquer NA. |
| Substituir NAs por valores | Substituir NA por 0, média, mediana ou outro valor adequado ao contexto. |
EXEMPLOS:
x <- c(10, NA, 5, NA, 7)
# Identificando NAs
is.na(x)
# Cálculo da média ignorando NAs
mean(x, na.rm = TRUE)
# Removendo NAs de um vetor
x_sem_na <- x[!is.na(x)]
# Removendo linhas com NA de um data frame
df_sem_na <- na.omit(df)
# Substituindo NAs por zero (exemplo simples)
x_substituido <- ifelse(is.na(x), 0, x)Embora a atividade foque em funções base do R, o conjunto de pacotes tidyverse é amplamente utilizado em análise de dados moderna.
Funções principais do pacote dplyr (tidyverse):
| Funcao | Descricao |
|---|---|
| select() | Seleciona colunas de um data frame. |
| filter() | Filtra linhas de acordo com condições lógicas. |
| mutate() | Cria ou modifica colunas. |
| summarise() | Resume o data frame em estatísticas agregadas. |
| arrange() | Ordena linhas por uma ou mais variáveis. |
EXEMPLOS:
library(dplyr)
df <- mtcars
df_resumo <- df %>%
select(mpg, cyl, hp, wt) %>% # seleciona colunas
filter(mpg > 20) %>% # filtra linhas
mutate(peso_kg = wt * 453.592 / 1000) %>% # cria nova coluna
group_by(cyl) %>% # agrupa por número de cilindros
summarise(
media_mpg = mean(mpg),
media_hp = mean(hp),
n = n()
) %>%
arrange(desc(media_mpg)) # ordena pela média de mpg
df_resumosessionInfo()Um aspecto importante em trabalhos científicos e relatórios técnicos é garantir que os resultados possam ser reproduzidos, inclusive em outra máquina.
Uma prática simples é registrar a sessão R (versão do R, sistema operacional e pacotes carregados).
| Recurso | Papel |
|---|---|
| sessionInfo() | Lista informações sobre a versão do R, OS e pacotes com suas versões. |
| set.seed() | Garante reprodutibilidade de operações aleatórias. |
| Scripts R/Rmd | Permitem registrar comandos de forma organizada e reexecutável. |
EXEMPLOS:
# Definir semente para replicar resultados aleatórios
set.seed(123)
amostra <- sample(1:100, size = 10)
# Registrar informações da sessão
sessionInfo()Neste documento foram apresentados os principais conceitos de:
read_xlsx(), read_delim(),
read_sheet() e seus argumentos);rbind() e
cbind();ncol(), nrow(), dim(),
head(), tail(), str());min(),
max(), mean(), sd(),
median(), round());>, <, ==, !=,
>=, <=, %in%,
!, &, |).Itajubá, novembro/2025.