O R foi criado em 1995 como uma implementação da linguagem S da Bell Labs, com foco em análises estatísticas e visualização de dados. Tornou-se uma ferramenta amplamente utilizada em áreas como estatística, ciência de dados e machine learning. Por sua flexibilidade e abrangência, R tornou-se essencial para profissionais que buscam insights profundos a partir de grandes volumes de dados.
R conta com uma comunidade ativa e crescente, que contribui constantemente com novos pacotes e técnicas, mantendo-a na vanguarda da análise de dados. Além disso, a capacidade de produzir visualizações gráficas avançadas e personalizadas faz da R uma ferramenta indispensável no arsenal de qualquer analista de dados que preza pela precisão e pela clareza na apresentação de resultados.
Sugestão do Lucas: Para aprofundamento na linguagem, recomento o site Learn R in Y minutes.
O RStudio é um IDE popular para trabalhar com R. Ele organiza ferramentas importantes de maneira prática:
Criação de Objetos: Utilizamos <-
ou =
para atribuir valores a variáveis.
x <- 5 # Atribui o valor 5 à variável x
y = "texto" # Atribui a string "texto" à variável y
Operações Aritméticas:
+
-
*
/
soma <- 5 + 3 # Resultado: 8
produto <- 6 * 7 # Resultado: 42
Funções Básicas:
print()
print(soma)
Funções Matemáticas:
sqrt()
^
sqrt(25) # Resultado: 5
2^3 # Resultado: 8
Instalação de Pacotes:
install.packages("nome_do_pacote")
library(nome_do_pacote)
install.packages("dplyr")
library(dplyr)
Vetores são a estrutura mais simples de dados no R. Eles contêm uma sequência de dados homogêneos (mesmo tipo). O comando c()
é usado para concatenar valores num vetor.
altura <- c(1.70, 1.75, 1.80)
Acessar Elementos de um Vetor:
altura[2] # Retorna o segundo valor: 1.75
Funções com Vetores:
sum()
length()
sum(altura) # Soma os valores do vetor
length(altura) # Retorna o número de elementos
Matrizes são tabelas bidimensionais com dados homogêneos, ou sejam todos os elementos da matriz são do mesmo tipo.
Isso cria uma matriz com 2 linhas e 3 colunas:
matriz <- matrix(1:6, nrow = 2, ncol = 3)
Manipulação de Matrizes:
matriz[1, 2] # Retorna o elemento na primeira linha e segunda coluna
Data frames são tabelas onde cada coluna pode ter tipos de dados diferentes (similar a planilhas de Excel).
Criação de Data Frames:
df <- data.frame(nome = c("João", "Maria"), idade = c(23, 21))
Acessando Data Frames:
df$nome # Acessa a coluna "nome"
df[1, 2] # Acessa o valor da linha 1, coluna 2
Funções Úteis:
str(df) # Mostra a estrutura do data frame
summary(df) # Mostra um resumo estatístico das variáveis
Para analisar dados numéricos, usamos várias medidas estatísticas descritivas.
mean(altura) # Média
median(altura) # Mediana
min(altura) # Mínimo
max(altura) # Máximo
Quartis e Interquartil:
quantile(altura)
IQR(altura) # Índice Interquartil
Desvio Padrão:
sd(altura)
Resumo Completo de um Data Frame:
summary(df)
Para variáveis categóricas, criamos tabelas de frequência para analisar a distribuição de ocorrências:
tabela <- table(df$nome)
Histogramas: Usados para visualizar a distribuição dos dados.
hist(altura)
Boxplots: Gráficos que mostram a dispersão dos dados.
boxplot(altura)
O dplyr é um pacote que facilita a manipulação de dados no R, com funções como:
df %>% select(nome, idade) # Seleciona colunas específicas
df %>% filter(idade > 22) # Filtra linhas com base em uma condição
df %>% mutate(idade_nova = idade + 1) # Adiciona nova coluna ou modifica colunas existentes
Outras Funções:
df %>% arrange(desc(idade)) # Ordena os dados por uma coluna
df %>% summarise(media_idade = mean(idade)) # Calcula resumos estatísticos
Para tratar valores faltantes, podemos usar a função ifelse()
:
df %>% mutate(idade = ifelse(is.na(idade), median(idade, na.rm = TRUE), idade))
A base de dados Titanic está disponível no pacote Titanic
. Para carregar os dados:
library(titanic)
data("titanic_train")
Exemplo de como transformar a variável Survived
em um fator:
titanic_train %>% mutate(Survived = factor(Survived, levels = c(0, 1), labels = c("Não", "Sim")))
Exemplo de preenchimento de valores faltantes com a mediana:
titanic_train %>% mutate(Age = ifelse(is.na(Age), median(Age, na.rm = TRUE), Age))
df %>% mutate_all(funs(./10)) # Aplica uma função a todas as colunas de um data frame
df %>% mutate_at(vars(altura, peso), funs(./100)) # Aplica funções a colunas específicas
df %>% mutate_if(is.numeric, round) # Modifica colunas com base em uma condição (por exemplo, aplicar apenas a colunas numéricas)
Reveja as principais funções de manipulação de dados, como select()
, mutate()
, filter()
,
etc. Pratique com a base de dados Titanic para se familiarizar com transformações e manipulação de dados. Teste as
funções de análise descritiva como mean()
, median()
, summary()
. Visualize
dados usando gráficos como histogramas e boxplots.
O ggplot2
é um dos pacotes mais robustos e amplamente utilizados para a visualização de dados no R.
Ele se baseia no conceito de "Gramática dos Gráficos" (The Grammar of Graphics), permitindo a construção de
gráficos de forma modular, com adição de diferentes camadas para controle detalhado sobre os elementos gráficos.
ggplot2
é construído a partir de camadas que
representam diferentes aspectos dos dados.
aes()
para definir variáveis
mapeadas a aspectos visuais, como cor, forma e tamanho.
facet_wrap()
ou
facet_grid()
.
library(ggplot2)
data(mpg)
ggplot(mpg, aes(x = displ, y = hwy, color = factor(cyl))) +
geom_point(size = 3) +
geom_smooth(method = "lm", se = FALSE) +
labs(title = "Deslocamento vs Consumo por Cilindros", x = "Deslocamento", y = "Consumo na estrada (mpg)") +
theme_minimal()
O dplyr
é um dos pacotes centrais para manipulação de dados no R, fornecendo uma gramática simples
para transformar e resumir dados de forma eficiente. Ele opera principalmente através de uma interface
consistente e intuitiva baseada em verbos (funções).
%>%
): O dplyr
popularizou o uso do %>%
para encadear operações.
library(dplyr)
mtcars %>%
filter(mpg > 20) %>%
group_by(cyl) %>%
summarize(mean_hp = mean(hp), sd_hp = sd(hp)) %>%
arrange(desc(mean_hp))
O tidyr
auxilia na organização de dados 'tidy', onde cada variável forma uma coluna, cada observação
uma linha e cada tipo de unidade observacional uma tabela.
unite()
e separate()
lidam
com colunas múltiplas.
library(tidyr)
data <- data.frame(
nome = c("Ana", "Bruno", "Carla"),
matem = c(90, 85, 80),
portugues = c(88, 90, 82)
)
data_long <- pivot_longer(data, cols = c(matem, portugues), names_to = "disciplina", values_to = "nota")
O data.table
é uma extensão otimizada do data.frame
, eficiente para grandes dados.
data.table
não cria cópias desnecessárias,
modificando dados diretamente.
setkey()
): Usado para junções rápidas e ordenações.library(data.table)
dt <- data.table(mtcars)
dt[mpg > 20, .(mean_hp = mean(hp)), by = cyl]
O shiny
permite a criação de aplicativos web interativos em R.
library(shiny)
ui <- fluidPage(
sliderInput("obs", "Número de Observações:", min = 1, max = 100, value = 50),
plotOutput("distPlot")
)
server <- function(input, output) {
output$distPlot <- renderPlot({
hist(rnorm(input$obs))
})
}
shinyApp(ui = ui, server = server)
O forecast
oferece ferramentas para modelagem e previsão de séries temporais.
auto.arima()
e ets()
.
forecast()
gera previsões de modelos ajustados.library(forecast)
fit <- auto.arima(AirPassengers)
forecast(fit, h = 12)
O caret
facilita a construção de modelos preditivos com suporte para várias técnicas de aprendizado.
train()
treina modelos supervisionados com validação
cruzada.
preProcess()
normaliza dados.library(caret)
train_control <- trainControl(method = "cv", number = 10)
model <- train(Species ~ ., data = iris, method = "rpart", trControl = train_control)
O plotly
adiciona interatividade a gráficos, convertendo gráficos ggplot2
em
interativos.
library(plotly)
p <- ggplot(mpg, aes(x = displ, y = hwy)) + geom_point()
ggplotly(p)
O zoo
facilita a manipulação de séries temporais com intervalos irregulares.
rollapply()
aplica funções a janelas móveis.library(zoo)
data <- zoo(c(1, 2, 3, NA, 5), order.by = as.Date('2023-01-01') + 0:4)
na.approx(data)
O knitr
cria relatórios dinâmicos em R, combinando código e resultados.
knit("relatorio.Rmd")
O rvest
facilita a extração de dados da web (web scraping).
read_html()
lê páginas e html_text()
extrai textos.
library(rvest)
url <- "https://en.wikipedia.org/wiki/Web_scraping"
page <- read_html(url)
title <- page %>% html_nodes("h1") %>% html_text()
print(title)
O Rcpp
integra funções C++ diretamente no R, aumentando o desempenho de cálculos complexos.
cppFunction()
para definir funções em C++ inline.sourceCpp()
compila e carrega código C++.library(Rcpp)
cppFunction('int add(int x, int y) {
return x + y;
}')
add(10, 20)