Aplicações em R

1. Introdução ao R e RStudio (Aula1.pdf)

1.1. O que é R?

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.

1.2. O Ambiente RStudio

O RStudio é um IDE popular para trabalhar com R. Ele organiza ferramentas importantes de maneira prática:

1.3. Operações Básicas no R

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(soma)

Funções Matemáticas:

sqrt(25)  # Resultado: 5
2^3  # Resultado: 8

Instalação de Pacotes:

install.packages("dplyr")
library(dplyr)

2. Estruturas de Dados no R (Aula2.pptx)

2.1. Vetores

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(altura)  # Soma os valores do vetor
length(altura)  # Retorna o número de elementos

2.2. Matrizes

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

2.3. Data Frames

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

3. Análise Descritiva de Dados (Aula3.pptx)

3.1. Medidas Descritivas

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)

3.2. Tabelas de Frequência

Para variáveis categóricas, criamos tabelas de frequência para analisar a distribuição de ocorrências:

tabela <- table(df$nome)

3.3. Visualização de Dados

Histogramas: Usados para visualizar a distribuição dos dados.

hist(altura)

Boxplots: Gráficos que mostram a dispersão dos dados.

boxplot(altura)

4. Manipulação de Dados com dplyr (Aula4.pptx e Aula4.docx)

4.1. Funções Principais do dplyr

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

4.2. Manipulação de Valores Faltantes

Para tratar valores faltantes, podemos usar a função ifelse():

df %>% mutate(idade = ifelse(is.na(idade), median(idade, na.rm = TRUE), idade))

5. Análise Prática: Base de Dados Titanic (Aula4.pptx)

5.1. Carregando a Base de Dados Titanic

A base de dados Titanic está disponível no pacote Titanic. Para carregar os dados:

library(titanic)
data("titanic_train")

5.2. Manipulação de Variáveis

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")))

5.3. Tratamento de Valores Faltantes

Exemplo de preenchimento de valores faltantes com a mediana:

titanic_train %>% mutate(Age = ifelse(is.na(Age), median(Age, na.rm = TRUE), Age))

6. Operações Avançadas com mutate() (Aula4.docx)

6.1. Funções mutate()

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)

Conclusão e Dicas de Estudo

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.

Resumo Completo dos Pacotes de R

ggplot2

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.

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()

dplyr

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).

library(dplyr)
mtcars %>%
  filter(mpg > 20) %>%
  group_by(cyl) %>%
  summarize(mean_hp = mean(hp), sd_hp = sd(hp)) %>%
  arrange(desc(mean_hp))

tidyr

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.

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")

data.table

O data.table é uma extensão otimizada do data.frame, eficiente para grandes dados.

library(data.table)
dt <- data.table(mtcars)
dt[mpg > 20, .(mean_hp = mean(hp)), by = cyl]

shiny

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)

forecast

O forecast oferece ferramentas para modelagem e previsão de séries temporais.

library(forecast)
fit <- auto.arima(AirPassengers)
forecast(fit, h = 12)

caret

O caret facilita a construção de modelos preditivos com suporte para várias técnicas de aprendizado.

library(caret)
train_control <- trainControl(method = "cv", number = 10)
model <- train(Species ~ ., data = iris, method = "rpart", trControl = train_control)

plotly

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)

zoo

O zoo facilita a manipulação de séries temporais com intervalos irregulares.

library(zoo)
data <- zoo(c(1, 2, 3, NA, 5), order.by = as.Date('2023-01-01') + 0:4)
na.approx(data)

knitr

O knitr cria relatórios dinâmicos em R, combinando código e resultados.

knit("relatorio.Rmd")

rvest

O rvest facilita a extração de dados da web (web scraping).

library(rvest)
url <- "https://en.wikipedia.org/wiki/Web_scraping"
page <- read_html(url)
title <- page %>% html_nodes("h1") %>% html_text()
print(title)

Rcpp

O Rcpp integra funções C++ diretamente no R, aumentando o desempenho de cálculos complexos.

library(Rcpp)
cppFunction('int add(int x, int y) {
  return x + y;
}')
add(10, 20)