Introdução

Este documento apresenta os principais conceitos de importação e manipulação de dados no R. Em cada tópico há uma explicação e exemplos.

Pacotes usados: readxl, readr, googlesheets4 (para importação) e base R para manipulações.

Instalação (quando necessário):

No console install.packages(readxl) install.packages(readr) install.packages(googlesheets4)

Carregar pacotes:

library(readxl); library(readr); library(googlesheets4)

library(readxl)
## Warning: package 'readxl' was built under R version 4.3.3
library(readr) 
## Warning: package 'readr' was built under R version 4.3.3
library(googlesheets4)
## Warning: package 'googlesheets4' was built under R version 4.3.3

(a) Importação de dados

readxl::read_xlsx() — planilhas Excel (.xlsx)

Objetivo

Ler planilhas Excel modernas (.xlsx) diretamente em um data.frame.

Argumento-chave:

path (caminho completo ou URL do arquivo .xlsx).

Outros úteis: sheet (aba), range, col_types, skip.

library(readxl)

# Exemplo com caminho local:
# path = "dados/clientes.xlsx"
base_dados_dos_clientes_xlsx <- read_xlsx(path = "dados/clientes.xlsx", sheet = "Base")

# Exemplo com URL pública (quando disponível):
# df_xlsx <- read_xlsx(path = "https://exemplo.com/arquivo.xlsx")

Observações. - read_xlsx() usa path como nome do argumento para o arquivo. - Para .xls (antigo), use readxl::read_xls().


readr::read_delim() — arquivos de texto delimitados

Objetivo. Ler arquivos de texto delimitados (CSV, TSV etc.) com alto desempenho.

Argumentos-chave: - file: caminho ou URL do arquivo. - delim: caractere delimitador (‘,’ para CSV, ‘;’ para CSV europeu, ’ para TSV). - locale, col_types, na, skip também são úteis.

library(readr)

# CSV padrão (vírgula como separador)
clientes_csv <- read_delim(file = "dados/clientes.csv", delim = ",")

# CSV com ponto e vírgula (comum em PT-BR/Excel)
clientes_csv2 <- read_delim(file = "dados/clientes_pv.csv", delim = ";")

# TSV (tab-separated values)
tabela_tsv <- read_delim(file = "dados/tabela.tsv", delim = "\t")

Observações. - Em readr, o argumento do arquivo costuma se chamar file. - Atalhos: readr::read_csv() (delim = “,”), readr::read_csv2() (delim = “;”), readr::read_tsv() (delim = “).


googlesheets4::read_sheet() — Google Sheets

Objetivo Ler guias de uma planilha do Google direto para R.

Argumentos-chave: - ss: identificação da planilha (URL completa, ID ou gs4_id). - sheet: nome/índice da guia (aba) a importar.

library(googlesheets4)

# 1) Autentique (abre janela do Google):
gs4_auth()  # ou gs4_auth(email = "seu_email@dominio.com")

# 2) Ler uma guia específica da planilha
# Use a URL completa da planilha no argumento `ss`:
dados_googlesheet <- read_sheet(ss = "https://docs.google.com/spreadsheets/d/PLANILHA_ID/edit#gid=0",
                       sheet = "Base")

Atenção.

  • Garanta que tenha permissão de leitura na planilha para seu e‑mail.
  • O argumento correto é ss.

Resumo dos argumentos (path, file, delim, ss)

  • path: usado por funções como readxl::read_xlsx() para indicar o caminho/URL do arquivo Excel.
  • file: usado por readr::read_delim() para indicar o caminho/URL do arquivo texto.
  • delim: separador de campos em arquivos texto (“,” “;” “ etc.), obrigatório em read_delim().
  • ss: identificador (URL/ID) de planilha Google em googlesheets4::read_sheet().

(b) Combinação de tabelas — rbind() e cbind()

Objetivo Empilhar linhas (rbind) ou colar colunas (cbind) de objetos tabulares compatíveis.

# Exemplo
a <- head(mtcars, 5)
b <- tail(mtcars, 5)

# Empilhar (mesmas colunas, mesma ordem e tipos)
empilhado <- rbind(a, b)
dim(empilhado)
## [1] 10 11
# Colar colunas (mesmo número de linhas)
x <- mtcars[1:10, 1:3]
y <- mtcars[1:10, 4:6]
colado <- cbind(x, y)
dim(colado)
## [1] 10  6

Boas práticas. - Para rbind() funcionar bem, garanta mesmos nomes e classes das colunas (ou reordene/renomeie antes). - Para cbind(), garanta o mesmo número de linhas e a mesma ordem dos registros.


(c) Estrutura e dimensões dos dados

Funções úteis para inspeção rápida:

dados <- iris

ncol(dados)   # número de colunas
## [1] 5
nrow(dados)   # número de linhas
## [1] 150
dim(dados)    # (linhas, colunas)
## [1] 150   5
head(dados, 3) # primeiras linhas
##   Sepal.Length Sepal.Width Petal.Length Petal.Width Species
## 1          5.1         3.5          1.4         0.2  setosa
## 2          4.9         3.0          1.4         0.2  setosa
## 3          4.7         3.2          1.3         0.2  setosa
tail(dados, 3) # últimas linhas
##     Sepal.Length Sepal.Width Petal.Length Petal.Width   Species
## 148          6.5         3.0          5.2         2.0 virginica
## 149          6.2         3.4          5.4         2.3 virginica
## 150          5.9         3.0          5.1         1.8 virginica
str(dados)     # estrutura: tipos, exemplos, fatores, etc.
## 'data.frame':    150 obs. of  5 variables:
##  $ Sepal.Length: num  5.1 4.9 4.7 4.6 5 5.4 4.6 5 4.4 4.9 ...
##  $ Sepal.Width : num  3.5 3 3.2 3.1 3.6 3.9 3.4 3.4 2.9 3.1 ...
##  $ Petal.Length: num  1.4 1.4 1.3 1.5 1.4 1.7 1.4 1.5 1.4 1.5 ...
##  $ Petal.Width : num  0.2 0.2 0.2 0.2 0.2 0.4 0.3 0.2 0.2 0.1 ...
##  $ Species     : Factor w/ 3 levels "setosa","versicolor",..: 1 1 1 1 1 1 1 1 1 1 ...

(d) Seleção e subconjuntos (linhas/colunas)

Índice básico: obj[linhas, colunas] (vazio = tudo).
Aceita vetores numéricos, nomes de colunas, lógicos e negativos.

teste <- mtcars

# Por POSIÇÃO (número da coluna/linha)
teste[1:3, 1:2]         # 3 primeiras linhas, 2 primeiras colunas
##                mpg cyl
## Mazda RX4     21.0   6
## Mazda RX4 Wag 21.0   6
## Datsun 710    22.8   4
teste[c(1,5,10), 4]     # linhas específicas, 4ª coluna
## [1] 110 175 123
# Por NOME de coluna
teste[1:3, c("mpg","hp")]
##                mpg  hp
## Mazda RX4     21.0 110
## Mazda RX4 Wag 21.0 110
## Datsun 710    22.8  93
teste[, c("mpg","cyl")] # todas as linhas, colunas selecionadas
##                      mpg cyl
## Mazda RX4           21.0   6
## Mazda RX4 Wag       21.0   6
## Datsun 710          22.8   4
## Hornet 4 Drive      21.4   6
## Hornet Sportabout   18.7   8
## Valiant             18.1   6
## Duster 360          14.3   8
## Merc 240D           24.4   4
## Merc 230            22.8   4
## Merc 280            19.2   6
## Merc 280C           17.8   6
## Merc 450SE          16.4   8
## Merc 450SL          17.3   8
## Merc 450SLC         15.2   8
## Cadillac Fleetwood  10.4   8
## Lincoln Continental 10.4   8
## Chrysler Imperial   14.7   8
## Fiat 128            32.4   4
## Honda Civic         30.4   4
## Toyota Corolla      33.9   4
## Toyota Corona       21.5   4
## Dodge Challenger    15.5   8
## AMC Javelin         15.2   8
## Camaro Z28          13.3   8
## Pontiac Firebird    19.2   8
## Fiat X1-9           27.3   4
## Porsche 914-2       26.0   4
## Lotus Europa        30.4   4
## Ford Pantera L      15.8   8
## Ferrari Dino        19.7   6
## Maserati Bora       15.0   8
## Volvo 142E          21.4   4
# Exclusão por índice/nomes (usa negativo)
teste[ , -c(1,2)]              # todas as colunas menos 1 e 2
##                      disp  hp drat    wt  qsec vs am gear carb
## Mazda RX4           160.0 110 3.90 2.620 16.46  0  1    4    4
## Mazda RX4 Wag       160.0 110 3.90 2.875 17.02  0  1    4    4
## Datsun 710          108.0  93 3.85 2.320 18.61  1  1    4    1
## Hornet 4 Drive      258.0 110 3.08 3.215 19.44  1  0    3    1
## Hornet Sportabout   360.0 175 3.15 3.440 17.02  0  0    3    2
## Valiant             225.0 105 2.76 3.460 20.22  1  0    3    1
## Duster 360          360.0 245 3.21 3.570 15.84  0  0    3    4
## Merc 240D           146.7  62 3.69 3.190 20.00  1  0    4    2
## Merc 230            140.8  95 3.92 3.150 22.90  1  0    4    2
## Merc 280            167.6 123 3.92 3.440 18.30  1  0    4    4
## Merc 280C           167.6 123 3.92 3.440 18.90  1  0    4    4
## Merc 450SE          275.8 180 3.07 4.070 17.40  0  0    3    3
## Merc 450SL          275.8 180 3.07 3.730 17.60  0  0    3    3
## Merc 450SLC         275.8 180 3.07 3.780 18.00  0  0    3    3
## Cadillac Fleetwood  472.0 205 2.93 5.250 17.98  0  0    3    4
## Lincoln Continental 460.0 215 3.00 5.424 17.82  0  0    3    4
## Chrysler Imperial   440.0 230 3.23 5.345 17.42  0  0    3    4
## Fiat 128             78.7  66 4.08 2.200 19.47  1  1    4    1
## Honda Civic          75.7  52 4.93 1.615 18.52  1  1    4    2
## Toyota Corolla       71.1  65 4.22 1.835 19.90  1  1    4    1
## Toyota Corona       120.1  97 3.70 2.465 20.01  1  0    3    1
## Dodge Challenger    318.0 150 2.76 3.520 16.87  0  0    3    2
## AMC Javelin         304.0 150 3.15 3.435 17.30  0  0    3    2
## Camaro Z28          350.0 245 3.73 3.840 15.41  0  0    3    4
## Pontiac Firebird    400.0 175 3.08 3.845 17.05  0  0    3    2
## Fiat X1-9            79.0  66 4.08 1.935 18.90  1  1    4    1
## Porsche 914-2       120.3  91 4.43 2.140 16.70  0  1    5    2
## Lotus Europa         95.1 113 3.77 1.513 16.90  1  1    5    2
## Ford Pantera L      351.0 264 4.22 3.170 14.50  0  1    5    4
## Ferrari Dino        145.0 175 3.62 2.770 15.50  0  1    5    6
## Maserati Bora       301.0 335 3.54 3.570 14.60  0  1    5    8
## Volvo 142E          121.0 109 4.11 2.780 18.60  1  1    4    2
teste[ , setdiff(names(teste), c("mpg","cyl"))]
##                      disp  hp drat    wt  qsec vs am gear carb
## Mazda RX4           160.0 110 3.90 2.620 16.46  0  1    4    4
## Mazda RX4 Wag       160.0 110 3.90 2.875 17.02  0  1    4    4
## Datsun 710          108.0  93 3.85 2.320 18.61  1  1    4    1
## Hornet 4 Drive      258.0 110 3.08 3.215 19.44  1  0    3    1
## Hornet Sportabout   360.0 175 3.15 3.440 17.02  0  0    3    2
## Valiant             225.0 105 2.76 3.460 20.22  1  0    3    1
## Duster 360          360.0 245 3.21 3.570 15.84  0  0    3    4
## Merc 240D           146.7  62 3.69 3.190 20.00  1  0    4    2
## Merc 230            140.8  95 3.92 3.150 22.90  1  0    4    2
## Merc 280            167.6 123 3.92 3.440 18.30  1  0    4    4
## Merc 280C           167.6 123 3.92 3.440 18.90  1  0    4    4
## Merc 450SE          275.8 180 3.07 4.070 17.40  0  0    3    3
## Merc 450SL          275.8 180 3.07 3.730 17.60  0  0    3    3
## Merc 450SLC         275.8 180 3.07 3.780 18.00  0  0    3    3
## Cadillac Fleetwood  472.0 205 2.93 5.250 17.98  0  0    3    4
## Lincoln Continental 460.0 215 3.00 5.424 17.82  0  0    3    4
## Chrysler Imperial   440.0 230 3.23 5.345 17.42  0  0    3    4
## Fiat 128             78.7  66 4.08 2.200 19.47  1  1    4    1
## Honda Civic          75.7  52 4.93 1.615 18.52  1  1    4    2
## Toyota Corolla       71.1  65 4.22 1.835 19.90  1  1    4    1
## Toyota Corona       120.1  97 3.70 2.465 20.01  1  0    3    1
## Dodge Challenger    318.0 150 2.76 3.520 16.87  0  0    3    2
## AMC Javelin         304.0 150 3.15 3.435 17.30  0  0    3    2
## Camaro Z28          350.0 245 3.73 3.840 15.41  0  0    3    4
## Pontiac Firebird    400.0 175 3.08 3.845 17.05  0  0    3    2
## Fiat X1-9            79.0  66 4.08 1.935 18.90  1  1    4    1
## Porsche 914-2       120.3  91 4.43 2.140 16.70  0  1    5    2
## Lotus Europa         95.1 113 3.77 1.513 16.90  1  1    5    2
## Ford Pantera L      351.0 264 4.22 3.170 14.50  0  1    5    4
## Ferrari Dino        145.0 175 3.62 2.770 15.50  0  1    5    6
## Maserati Bora       301.0 335 3.54 3.570 14.60  0  1    5    8
## Volvo 142E          121.0 109 4.11 2.780 18.60  1  1    4    2
# Filtro por condição (linhas lógicas)
teste[teste$mpg > 25, ]           # somente carros com mpg > 25
##                 mpg cyl  disp  hp drat    wt  qsec vs am gear carb
## Fiat 128       32.4   4  78.7  66 4.08 2.200 19.47  1  1    4    1
## Honda Civic    30.4   4  75.7  52 4.93 1.615 18.52  1  1    4    2
## Toyota Corolla 33.9   4  71.1  65 4.22 1.835 19.90  1  1    4    1
## Fiat X1-9      27.3   4  79.0  66 4.08 1.935 18.90  1  1    4    1
## Porsche 914-2  26.0   4 120.3  91 4.43 2.140 16.70  0  1    5    2
## Lotus Europa   30.4   4  95.1 113 3.77 1.513 16.90  1  1    5    2
subset(teste, mpg > 25 & cyl == 4)  # alternativa legível
##                 mpg cyl  disp  hp drat    wt  qsec vs am gear carb
## Fiat 128       32.4   4  78.7  66 4.08 2.200 19.47  1  1    4    1
## Honda Civic    30.4   4  75.7  52 4.93 1.615 18.52  1  1    4    2
## Toyota Corolla 33.9   4  71.1  65 4.22 1.835 19.90  1  1    4    1
## Fiat X1-9      27.3   4  79.0  66 4.08 1.935 18.90  1  1    4    1
## Porsche 914-2  26.0   4 120.3  91 4.43 2.140 16.70  0  1    5    2
## Lotus Europa   30.4   4  95.1 113 3.77 1.513 16.90  1  1    5    2
# Seleção por vetor lógico de colunas
cols_numericas <- sapply(teste, is.numeric)
teste[, cols_numericas]
##                      mpg cyl  disp  hp drat    wt  qsec vs am gear carb
## Mazda RX4           21.0   6 160.0 110 3.90 2.620 16.46  0  1    4    4
## Mazda RX4 Wag       21.0   6 160.0 110 3.90 2.875 17.02  0  1    4    4
## Datsun 710          22.8   4 108.0  93 3.85 2.320 18.61  1  1    4    1
## Hornet 4 Drive      21.4   6 258.0 110 3.08 3.215 19.44  1  0    3    1
## Hornet Sportabout   18.7   8 360.0 175 3.15 3.440 17.02  0  0    3    2
## Valiant             18.1   6 225.0 105 2.76 3.460 20.22  1  0    3    1
## Duster 360          14.3   8 360.0 245 3.21 3.570 15.84  0  0    3    4
## Merc 240D           24.4   4 146.7  62 3.69 3.190 20.00  1  0    4    2
## Merc 230            22.8   4 140.8  95 3.92 3.150 22.90  1  0    4    2
## Merc 280            19.2   6 167.6 123 3.92 3.440 18.30  1  0    4    4
## Merc 280C           17.8   6 167.6 123 3.92 3.440 18.90  1  0    4    4
## Merc 450SE          16.4   8 275.8 180 3.07 4.070 17.40  0  0    3    3
## Merc 450SL          17.3   8 275.8 180 3.07 3.730 17.60  0  0    3    3
## Merc 450SLC         15.2   8 275.8 180 3.07 3.780 18.00  0  0    3    3
## Cadillac Fleetwood  10.4   8 472.0 205 2.93 5.250 17.98  0  0    3    4
## Lincoln Continental 10.4   8 460.0 215 3.00 5.424 17.82  0  0    3    4
## Chrysler Imperial   14.7   8 440.0 230 3.23 5.345 17.42  0  0    3    4
## Fiat 128            32.4   4  78.7  66 4.08 2.200 19.47  1  1    4    1
## Honda Civic         30.4   4  75.7  52 4.93 1.615 18.52  1  1    4    2
## Toyota Corolla      33.9   4  71.1  65 4.22 1.835 19.90  1  1    4    1
## Toyota Corona       21.5   4 120.1  97 3.70 2.465 20.01  1  0    3    1
## Dodge Challenger    15.5   8 318.0 150 2.76 3.520 16.87  0  0    3    2
## AMC Javelin         15.2   8 304.0 150 3.15 3.435 17.30  0  0    3    2
## Camaro Z28          13.3   8 350.0 245 3.73 3.840 15.41  0  0    3    4
## Pontiac Firebird    19.2   8 400.0 175 3.08 3.845 17.05  0  0    3    2
## Fiat X1-9           27.3   4  79.0  66 4.08 1.935 18.90  1  1    4    1
## Porsche 914-2       26.0   4 120.3  91 4.43 2.140 16.70  0  1    5    2
## Lotus Europa        30.4   4  95.1 113 3.77 1.513 16.90  1  1    5    2
## Ford Pantera L      15.8   8 351.0 264 4.22 3.170 14.50  0  1    5    4
## Ferrari Dino        19.7   6 145.0 175 3.62 2.770 15.50  0  1    5    6
## Maserati Bora       15.0   8 301.0 335 3.54 3.570 14.60  0  1    5    8
## Volvo 142E          21.4   4 121.0 109 4.11 2.780 18.60  1  1    4    2

(e) Funções estatísticas básicas

x <- c(1, 2, 3, 4, 5, NA)

min(x, na.rm = TRUE)    # menor valor
## [1] 1
max(x, na.rm = TRUE)    # maior valor
## [1] 5
mean(x, na.rm = TRUE)   # média
## [1] 3
sd(x, na.rm = TRUE)     # desvio-padrão
## [1] 1.581139
median(x, na.rm = TRUE) # mediana
## [1] 3
round(pi, digits = 2)   # arredondamento
## [1] 3.14

Em dados reais, vale a pena tratar valores faltantes com na.rm = TRUE nas funções.


(f) Comparações lógicas e tipos

Tipos/Classes e datas:

class(iris$Sepal.Length)  # classe do objeto
## [1] "numeric"
hoje <- Sys.Date()        # data do sistema
hoje
## [1] "2025-10-29"
# Comparações com datas
ontem <- hoje - 1
hoje > ontem              # TRUE
## [1] TRUE

Operadores relacionais:

5 > 3      # maior que
## [1] TRUE
5 < 3      # menor que
## [1] FALSE
5 == 5     # igual
## [1] TRUE
5 != 4     # diferente
## [1] TRUE
5 >= 5     # maior ou igual
## [1] TRUE
3 <= 5     # menor ou igual
## [1] TRUE

(g) Operadores compostos — Regra do E (&) e do OU (|)

teste <- mtcars

# E: carros com mpg > 25 **E** 4 cilindros
subset(teste, mpg > 25 & cyl == 4)[, c("mpg","cyl")]
##                 mpg cyl
## Fiat 128       32.4   4
## Honda Civic    30.4   4
## Toyota Corolla 33.9   4
## Fiat X1-9      27.3   4
## Porsche 914-2  26.0   4
## Lotus Europa   30.4   4
# OU: carros com 6 **OU** 8 cilindros
subset(teste, cyl == 6 | cyl == 8)[, c("cyl","mpg")]
##                     cyl  mpg
## Mazda RX4             6 21.0
## Mazda RX4 Wag         6 21.0
## Hornet 4 Drive        6 21.4
## Hornet Sportabout     8 18.7
## Valiant               6 18.1
## Duster 360            8 14.3
## Merc 280              6 19.2
## Merc 280C             6 17.8
## Merc 450SE            8 16.4
## Merc 450SL            8 17.3
## Merc 450SLC           8 15.2
## Cadillac Fleetwood    8 10.4
## Lincoln Continental   8 10.4
## Chrysler Imperial     8 14.7
## Dodge Challenger      8 15.5
## AMC Javelin           8 15.2
## Camaro Z28            8 13.3
## Pontiac Firebird      8 19.2
## Ford Pantera L        8 15.8
## Ferrari Dino          6 19.7
## Maserati Bora         8 15.0

Observação: & e | operam elemento a elemento em vetores.
Em expressões escalares, há também && e || (avaliam apenas o primeiro elemento de cada lado).