1. Apresentação do Capítulo

Este capítulo, “Introdução ao R: Construindo Fundamentos em Programação e Visualização de Dados”, oferece uma jornada através dos principais aspectos da linguagem de programação R. A programação básica em R é abordada, incluindo operações matemáticas, declaração de variáveis, manipulação de vetores e criação de data frames. Você aprenderá imprimir informações formatadas no console e a construir tabelas e data frames de maneira eficiente.

No módulo sobre estruturas de controle em R, são apresentadas técnicas avançadas, como o uso de funções, loops e estruturas condicionais (if() else()). A manipulação habilidosa de DataFrames é explorada em detalhes, oferecendo uma compreensão da organização e extração de informações.

A visualização de dados com ggplot2 constitui uma parte do capítulo, Veremos como criar uma variedade de gráficos, incluindo dispersão, linhas, barras, histograma, setores e caixa.

2. Introdução ao R e Operações Básicas

2.1 História da criação do software R

A história do software R remonta a uma necessidade crescente por ferramentas estatísticas poderosas, tanto na pesquisa acadêmica quanto na indústria. A busca por uma linguagem estatística livre e eficiente levou ao desenvolvimento do R, cujas raízes podem ser rastreadas até o S, uma linguagem de programação e ambiente de análise estatística criado nos Laboratórios Bell nos anos 70.

O projeto GNU, liderado por Richard Stallman, desempenhou um papel crucial ao promover a liberdade de software. O R começou a ganhar forma nas mãos de Ross Ihaka e Robert Gentleman na Universidade de Auckland, Nova Zelândia, no início dos anos 90. Em 1995, o R foi lançado publicamente, marcando o início de sua jornada como uma linguagem de programação de código aberto acessível a todos.

Desde então, o R evoluiu constantemente, impulsionado pela colaboração da comunidade global de usuários e desenvolvedores. Sua popularidade crescente reflete sua posição como uma ferramenta padrão na estatística, ciência de dados e pesquisa. O R não é apenas uma linguagem de programação, mas também uma comunidade engajada, demonstrando o poder da colaboração e da filosofia do código aberto na construção de ferramentas para análise de dados.

2.2 Operações Matemáticas Básicas no R

O software R oferece uma variedade de ferramentas para realizar operações matemáticas básicas. Essa capacidade permite aos usuários manipular e analisar dados desde análises estatísticas simples até modelagem estatística avançada.

No contexto do R, as operações matemáticas básicas são executadas de maneira intuitiva,vamos explorar as operações mais fundamentais:

Adição (+): A operação de adição no R é utilizada para somar dois valores. Por exemplo, ao executar 3 + 5, o R retornará o resultado 8.

3+5
## [1] 8

Subtração (-): A subtração, representada pelo operador “-”, permite a obtenção da diferença entre dois valores. Se digitarmos 10 - 4, o R nos dará o resultado 6.

10-4
## [1] 6

Multiplicação (*): Para realizar a multiplicação de dois números, usamos o operador “*“. Ao digitar 2 * 6, o R nos fornecerá o produto, que é 12.

2*6
## [1] 12

Divisão Real (/): A operação de divisão, indicada pelo operador “/”, permite dividir um número pelo outro. Se executarmos 14 / 4, o R retornará o quociente 3.5.

14/4
## [1] 3.5

Divisão Inteira (%/%): A operação de divisão inteira, indicada pelo operador “%/%”, permite dividir um número pelo outro porém retorna apenas o quociente inteiro da divisão. Se executarmos 14 %/% 4, o R retornará o quociente 3.

14%/%4
## [1] 3

Resto da divisão (%%): A operação para encontrar o resto da divisão, indicada pelo operador “%%”, permite o retorno apenas na parte não inteira da divisão. Se executarmos 14%%4, o R retornará o resto 2.

14%%4
## [1] 2

2.3 Declaração de Variáveis

No universo da programação, a declaração de variáveis desempenha um papel essencial para manipular dados de maneira eficiente. Vamos explorar como declarar variáveis e atribuir valores a elas nesta linguagem estatística.

2.3.1 Declarando variáveis:

Em R, declarar uma variável é uma tarefa simples. Podemos atribuir um valor a uma variável utilizando a sintaxe básica de <- ou =. Por exemplo:

# Usando a sintaxe <-
idade <- 25
idade
## [1] 25
# Ou usando a sintaxe =
nome = "João"
nome
## [1] "João"

Ambos os métodos são válidos e a escolha entre <- e = geralmente depende da preferência pessoal do programador.

2.3.2 Tipos de Variáveis

R é uma linguagem de tipagem dinâmica, o que significa que não é necessário especificar explicitamente o tipo de variável ao declará-la. O R automaticamente atribui um tipo de dados à variável com base no valor atribuído.

# Exemplos de variáveis de diferentes tipos
numero <- 42         # Variável numérica
texto <- "Olá, R!"   # Variável de texto (string)
logico <- TRUE        # Variável lógica (booleana)

numero
## [1] 42
texto
## [1] "Olá, R!"
logico
## [1] TRUE

2.4 Declaração de Vetores

No ambiente do R, a manipulação eficaz de dados muitas vezes envolve o uso de vetores, uma estrutura fundamental que permite armazenar elementos de maneira ordenada. Vamos explorar como declarar e manipular vetores no R.

2.4.1 Declaração de Vetores

A criação de vetores no R pode ser realizada de diversas formas. A maneira mais comum é utilizando a função c() (concatenar), que combina elementos em um vetor. Por exemplo:

# Criando um vetor numérico
numeros <- c(1, 2, 3, 4, 5)
numeros
## [1] 1 2 3 4 5
# Criando um vetor de texto
cores <- c("vermelho", "verde", "azul")
cores
## [1] "vermelho" "verde"    "azul"

Outra forma é utilizando a função seq() para gerar sequências de números automaticamente:

# Criando um vetor de 1 a 10
sequencia <- seq(1, 10)
sequencia
##  [1]  1  2  3  4  5  6  7  8  9 10

2.4.2 Acesso a Elementos de Vetores

Uma vez criado um vetor, para acessar seus elementos utilizamos [ ]. No R, os índices dos vetores começam em 1. Por exemplo:

# Acessando o primeiro elemento do vetor
primeiro <- numeros[1]
primeiro
## [1] 1
# Acessando o segundo elemento do vetor
segundo <- numeros[2]
segundo
## [1] 2

2.4.3 Operações com Vetores

Operações aritméticas podem ser aplicadas a vetores de maneira eficiente, elemento por elemento:

# Multiplicação de cada elemento por 2
dobro <- numeros * 2
dobro
## [1]  2  4  6  8 10

2.4.5 Criação de Vetores Lógicos

Vetores lógicos são frequentemente usados em expressões condicionais. Por exemplo:

# Criando um vetor lógico baseado em uma condição
maior_que_tres <- numeros > 3
maior_que_tres
## [1] FALSE FALSE FALSE  TRUE  TRUE

2.4.6 Combinação de Vetores

A combinação de vetores pode ser feita através da função c() ou da função append(). Por exemplo:

# Combinação de dois vetores
combinado <- c(numeros, sequencia)
combinado
##  [1]  1  2  3  4  5  1  2  3  4  5  6  7  8  9 10

Utilizando a função append() para combinar dois vetores:

# Criando dois vetores iniciais
vetor1 <- c(1, 2, 3)
vetor2 <- c(4, 5, 6)

# Utilizando a função append() para combinar os dois vetores
vetor_combinado <- append(vetor1, vetor2)

# Exibindo os resultados
print("Vetor 1:")
## [1] "Vetor 1:"
print(vetor1)
## [1] 1 2 3
print("Vetor 2:")
## [1] "Vetor 2:"
print(vetor2)
## [1] 4 5 6
print("Vetor Combinado:")
## [1] "Vetor Combinado:"
print(vetor_combinado)
## [1] 1 2 3 4 5 6

Neste exemplo, temos dois vetores, vetor1 e vetor2, cada um contendo alguns valores. Utilizamos a função append() para combinar esses dois vetores em um novo vetor chamado vetor_combinado. A função append() aceita os argumentos do vetor de destino (o vetor ao qual desejamos adicionar elementos) e os elementos a serem adicionados.

Ao executar esse código, você verá que o vetor combinado agora contém todos os elementos dos dois vetores originais. Isso ilustra como a função append() pode ser útil para adicionar elementos a um vetor existente, criando uma nova versão do vetor com os elementos adicionados. Vale ressaltar que esta forma de executar é a mais comum entre as demais linguagens de programação.

2.5 Comandos de Impressão (Print)

No R, a exibição de informações é uma parte do processo de programação e análise de dados. Vamos explorar como utilizar o comando print() para exibir informações no console e introduzir o pacote glue como uma ferramenta poderosa para formatação de texto.

2.5.1 Utilização do comando print()

O comando print() é uma função para exibir resultados no console do R. Ele é comumente utilizado para imprimir valores de variáveis, resultados de cálculos ou mensagens informativas. Vejamos um exemplo simples:

# Utilizando o comando print() para exibir uma mensagem
mensagem <- "Olá, mundo!"
print(mensagem)
## [1] "Olá, mundo!"
# Exibindo o resultado de um cálculo
resultado <- 2 + 3
print(resultado)
## [1] 5

O comando print() é útil para visualizar resultados imediatos durante o desenvolvimento do código.

2.5.2 Utilização do comando sprintf()

No R, a função sprintf() pode ser utilizada para realizar formatação de strings de maneira similar ao que a função printf() faz em algumas linguagens como C ou Java. Veja um exemplo de como usar sprintf() para obter um comportamento semelhante:

# Utilizando a função sprintf() para formatar uma string
idade <- 25
altura <- 1.75

# Formatando a string usando sprintf()
mensagem_formatada <- sprintf("A pessoa tem %d anos e altura %.2f metros.",
                              idade, altura)

# Exibindo a mensagem formatada
cat(mensagem_formatada, "\n")
## A pessoa tem 25 anos e altura 1.75 metros.

Neste exemplo, %d é um marcador de posição para um número inteiro, e %f é um marcador de posição para um número de ponto flutuante. Os valores de idade e altura são fornecidos como argumentos adicionais à função sprintf(), que substitui os marcadores de posição pelos valores reais.

A função cat() é usada para imprimir a mensagem no console. O \n é um caractere de nova linha para garantir que a próxima saída seja exibida em uma linha separada.

Lembrando que, embora a função sprintf() possa ser usada dessa maneira, a prática mais comum no R é usar a função paste() ou paste0() para combinar strings. Essas funções são mais flexíveis e adequadas para muitas situações.

2.5.3 Apresentação do Pacote glue()

O pacote glue oferece uma abordagem mais flexível e legível para a formatação de texto no R. Ele permite incorporar expressões R dentro de strings, facilitando a criação de mensagens mais dinâmicas e personalizadas.

# Instalando e carregando o pacote glue (caso ainda não esteja instalado)
# install.packages("glue")
library(glue)

# Utilizando a função glue() para formatar e imprimir texto
nome <- "Alice"
idade <- 30

mensagem_formatada <- glue("A pessoa se chama {nome} e tem {idade} anos.")
print(mensagem_formatada)
## A pessoa se chama Alice e tem 30 anos.

A função glue() permite incluir variáveis diretamente no texto entre chaves {}, tornando a mensagem mais legível e fácil de manter.

Ao combinar o uso do print() para mensagens simples e o glue() para formatação mais complexa, os usuários do R têm à disposição ferramentas versáteis para comunicar informações de maneira eficaz durante o desenvolvimento e apresentação de resultados.

2.6 Criação de Tabelas

No contexto do R, a criação de tabelas é utilizada para organizar e visualizar dados de maneira estruturada.

2.6.1 Matriz como Base para Tabelas

No R, as tabelas frequentemente começam como matrizes, que são estruturas bidimensionais de dados. Vamos criar uma matriz simples para representar dados tabulares:

# Criando uma matriz simples
dados <- matrix(c(1, 2, 3, 4, 5, 6), ncol = 2)

# Exibindo a matriz
print("Matriz de Dados:")
## [1] "Matriz de Dados:"
print(dados)
##      [,1] [,2]
## [1,]    1    4
## [2,]    2    5
## [3,]    3    6

Neste exemplo, a função matrix() é utilizada para criar uma matriz com dois valores em cada coluna. A opção ncol = 2 especifica que queremos duas colunas na matriz.

2.6.2 Convertendo Matriz em Tabela

Para transformar a matriz em uma tabela mais visual, podemos utilizar a função as.table():

# Convertendo a matriz em tabela
tabela_dados <- as.table(dados)

# Exibindo a tabela
print("Tabela de Dados:")
## [1] "Tabela de Dados:"
print(tabela_dados)
##   A B
## A 1 4
## B 2 5
## C 3 6

A função as.table() converte a matriz em um objeto de tabela, que é mais adequado para exibição e manipulação de dados tabulares.

2.6.3 Utilizando a Função data.frame()

Outra abordagem comum para criar tabelas no R é usar a função data.frame(), que permite criar estruturas de dados mais flexíveis e poderosas, sendo assim, acaba tornando-se o formato padrão para análise com grande volume de dados:

# Criando um data frame
dados_df <- data.frame(ID = c(1, 2, 3), 
                       Nome = c("Alice", "Bob", "Charlie"), 
                       Idade = c(25, 30, 22),
                       Nota = c(65, 95, 80))

# Exibindo o data frame
print("Data Frame:")
## [1] "Data Frame:"
print(dados_df)
##   ID    Nome Idade Nota
## 1  1   Alice    25   65
## 2  2     Bob    30   95
## 3  3 Charlie    22   80

Neste exemplo, criamos um data frame chamado dados_df com três colunas: “ID”, “Nome” e “Idade”. Cada coluna pode conter diferentes tipos de dados.

Investigando Dados no Data Frame:

Uma vez criado o data frame, podemos explorar e investigar os dados de várias maneiras:

# Exibindo as primeiras linhas do data frame
print("Primeiras Linhas:")
## [1] "Primeiras Linhas:"
print(head(dados_df))
##   ID    Nome Idade Nota
## 1  1   Alice    25   65
## 2  2     Bob    30   95
## 3  3 Charlie    22   80
# Resumo estatístico das variáveis numéricas
print("Resumo Estatístico:")
## [1] "Resumo Estatístico:"
print(summary(dados_df$Idade))
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##   22.00   23.50   25.00   25.67   27.50   30.00
print(summary(dados_df$Nota))
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##    65.0    72.5    80.0    80.0    87.5    95.0
# Filtrando dados com base em uma condição
print("Alunos com Nota > 90:")
## [1] "Alunos com Nota > 90:"
print(subset(dados_df, Nota > 90))
##   ID Nome Idade Nota
## 2  2  Bob    30   95
  • head(): Exibe as primeiras linhas do data frame, proporcionando uma visão rápida dos dados.

  • summary(): Fornece um resumo estatístico das variáveis numéricas, como média, mínimo, máximo e quartis.

  • subset(): Permite filtrar dados com base em uma condição específica. No exemplo, estamos filtrando alunos com nota superior a 90.

Adição de Novos Dados:

Podemos adicionar novas colunas ou linhas ao data frame conforme necessário:

# Adicionando uma nova coluna
dados_df$Sexo <- c("F", "M", "M")

# Adicionando uma nova linha
nova_linha <- data.frame(ID = 4, Nome = "Diana", Idade = 28, Nota = 88, Sexo = "F")
dados_df <- rbind(dados_df, nova_linha)

# Exibindo o data frame atualizado
print("Data Frame Atualizado:")
## [1] "Data Frame Atualizado:"
print(dados_df)
##   ID    Nome Idade Nota Sexo
## 1  1   Alice    25   65    F
## 2  2     Bob    30   95    M
## 3  3 Charlie    22   80    M
## 4  4   Diana    28   88    F

A função rbind() é usada para adicionar uma nova linha ao data frame.

2.7 Funções, Laços, Estruturas Condicionais e Manipulação de DataFrames no R

2.7.1 Funções no R

Na segunda etapa do nosso curso, vamos mergulhar no intrigante universo das funções no R. As funções são blocos de código que executam tarefas específicas, proporcionando um caminho para a modularidade e reutilização eficiente de código. Nesta aula, exploraremos tanto o uso de funções já incorporadas no R quanto a criação de nossas próprias.

2.7.1.1 Introdução às Funções no R:

As funções no R são como pequenos assistentes que realizam tarefas específicas quando chamados. Elas simplificam o código, tornando-o mais organizado e fácil de entender. Ao utilizar funções, podemos quebrar nosso programa em partes menores, facilitando a manutenção e o entendimento do código.

2.7.2 Funções Integradas:

O R já vem equipado com uma variedade de funções úteis para tarefas comuns. Vamos explorar algumas delas:

# Exemplos de funções integradas
media <- mean(c(2, 4, 6, 8, 10))
soma <- sum(1:5)
comprimento <- length(c("maçã", "banana", "laranja"))

media
## [1] 6
soma
## [1] 15
comprimento
## [1] 3

Aqui, utilizamos as funções mean(), sum() e length() para calcular a média de um vetor, a soma de uma sequência numérica e o comprimento de um vetor de palavras, respectivamente.

2.7.3 Criando Funções Próprias:

Criar nossas próprias funções no R é uma maneira de encapsular lógica específica para reutilização. Vejamos um exemplo simples:

# Criando uma função de saudação
saudacao <- function(nome) {
  library(glue)
  msg <- glue('Olá {nome}!, como você está?') 
  return(msg)
}

# Chamando a função
print(saudacao("Maria"))
## Olá Maria!, como você está?

Neste exemplo, a função saudacao() recebe um argumento nome e retorna uma mensagem personalizada. A função é então chamada com o argumento “Maria”.

Vamos criar uma função em R que recebe um vetor numérico e retorna a soma, média e mediana desse vetor.

# Função que calcula a soma, média e mediana de um vetor
calcular_estatisticas <- function(vetor) {

  
  # Calcula a soma, média e mediana
  soma <- sum(vetor)
  media <- mean(vetor)
  mediana <- median(vetor)
  
  # Cria um vetor com os resultados
  resultados <- c(Soma = soma, Média = media, Mediana = mediana)
  
  return(resultados)
}

# Testando a função
vetor_teste <- c(10, 15, 20, 25, 30)
resultado <- calcular_estatisticas(vetor_teste)

# Exibindo os resultados
print(resultado)
##    Soma   Média Mediana 
##     100      20      20

Nesta função, calcular_estatisticas, começamos calculando a soma, média e mediana usando as funções sum(), mean() e median(). Os resultados são armazenados em um vetor chamado resultados, onde cada elemento recebe um nome descritivo (Soma, Média, Mediana).

A função retorna o vetor com os resultados. O teste com o vetor de teste c(10, 15, 20, 25, 30) mostra como utilizar a função e exibir os resultados.

2.8 Laços (Loops) no R

Loops são estruturas de controle de fluxo que nos permitem executar repetidamente um bloco de código. Vamos explorar as duas principais estruturas de repetição no R: o loop for e o loop while.

2.8.1 Loop for:

O loop for é amplamente utilizado quando sabemos quantas vezes queremos repetir uma determinada operação. Sua sintaxe básica é a seguinte:

# Exemplo de loop for
for (i in 1:5) {
  print(paste("Iteração", i))
}
## [1] "Iteração 1"
## [1] "Iteração 2"
## [1] "Iteração 3"
## [1] "Iteração 4"
## [1] "Iteração 5"

Neste exemplo, o loop for percorre os valores de 1 a 5 (inclusive) para a variável i e executa o bloco de código dentro do loop. A função paste() é usada para criar uma mensagem combinando a string “Iteração” com o valor de i.

2.8.2 Loop while:

O loop while é útil quando não sabemos antecipadamente quantas iterações serão necessárias, mas temos uma condição que, quando satisfeita, continua a execução do loop. Exemplo:

# Exemplo de loop while
contador <- 1

while (contador <= 5) {
  print(paste("Iteração", contador))
  contador <- contador + 1
}
## [1] "Iteração 1"
## [1] "Iteração 2"
## [1] "Iteração 3"
## [1] "Iteração 4"
## [1] "Iteração 5"

Neste exemplo, o loop while continuará executando enquanto a condição contador <= 5 for verdadeira. A cada iteração, a mensagem é impressa, e o contador é incrementado.

2.8.3 Utilizando Loops em Funções:

Loops são frequentemente usados em conjunto com funções para realizar tarefas repetitivas. Vamos criar uma função que usa um loop for para calcular a potência de um número:

# Função para calcular potência usando loop for
calcular_potencia <- function(base, expoente) {
  resultado <- 1
  
  for (i in 1:expoente) {
    resultado <- resultado * base
  }
  
  return(resultado)
}

# Testando a função
print(calcular_potencia(2, 3))  # Deve imprimir 8
## [1] 8

Neste exemplo, a função calcular_potencia utiliza um loop for para multiplicar a base pelo número de vezes especificado pelo expoente.

2.9 Estruturas Condicionais (if() else())

Entraremos no domínio das estruturas condicionais no R, proporcionando a capacidade de tomar decisões no código. Vamos explorar a estrutura condicional mais básica: if() else().

2.9.1 Estrutura if() else():

A estrutura condicional if() else() é utilizada quando queremos que o código execute diferentes blocos de instruções com base em uma condição. Sua sintaxe básica é a seguinte:

# Exemplo de estrutura if() else()
idade <- 18

if (idade >= 18) {
  print("Você é maior de idade.")
} else {
  print("Você é menor de idade.")
}
## [1] "Você é maior de idade."

Neste exemplo simples, a estrutura if() else() verifica se a variável idade é maior ou igual a 18. Dependendo do resultado, uma mensagem específica é impressa.

2.9.2 Utilizando Estruturas Condicionais em Funções:

Estruturas condicionais são frequentemente integradas em funções para criar lógica mais complexa. Vamos criar uma função que verifica se um número é positivo, negativo ou zero:

# Função com estrutura condicional
verificar_numero <- function(numero) {
  if (numero > 0) {
    return("O número é positivo.")
  } else if (numero < 0) {
    return("O número é negativo.")
  } else {
    return("O número é zero.")
  }
}

# Testando a função
print(verificar_numero(-5))  # Deve imprimir "O número é negativo."
## [1] "O número é negativo."

Neste exemplo, a função verificar_numero utiliza a estrutura if() else if() else() para determinar se o número é positivo, negativo ou zero.

2.9.3 Integrando Estruturas Condicionais com Loops:

Loops e estruturas condicionais frequentemente trabalham juntos para criar lógica mais avançada. Vamos criar um loop que verifica a paridade dos números de 1 a 5:

# Loop com estrutura condicional
for (i in 1:5) {
  if (i %% 2 == 0) {
    print(paste(i, "é par."))
  } else {
    print(paste(i, "é ímpar."))
  }
}
## [1] "1 é ímpar."
## [1] "2 é par."
## [1] "3 é ímpar."
## [1] "4 é par."
## [1] "5 é ímpar."

Neste exemplo, o loop for verifica se cada número é par ou ímpar usando a operação %% (resto da divisão).

2.10 Manipulação de DataFrames

Aprofundaremos nossos conhecimentos em manipulação de DataFrames no R. Vamos utilizar funções próprias e comandos de decisão para demonstrar como acessar e manipular dados em DataFrames, explorando operações básicas como seleção de colunas, filtragem de linhas e criação de novas variáveis.

2.10.1 Acessando Colunas em um DataFrame:

Para acessar colunas específicas em um DataFrame, podemos utilizar o símbolo $. Vamos criar uma função que recebe um DataFrame e uma lista de colunas, retornando apenas essas colunas:

# Função para acessar colunas em um DataFrame
acessar_colunas <- function(data_frame, colunas) {
  return(data_frame[, colunas, drop = FALSE])
}

# Criando um DataFrame de exemplo
dados <- data.frame(
  Nome = c("Alice", "Bob", "Charlie"),
  Idade = c(25, 30, 22),
  Nota = c(90, 85, 95)
)

# Testando a função
print(acessar_colunas(dados, c("Nome", "Nota")))
##      Nome Nota
## 1   Alice   90
## 2     Bob   85
## 3 Charlie   95

Neste exemplo, a função acessar_colunas recebe um DataFrame e uma lista de colunas, retornando um novo DataFrame contendo apenas as colunas desejadas.

2.10.2 Filtragem de Linhas em um DataFrame:

Vamos criar uma função que filtra as linhas de um DataFrame com base em uma condição:

# Função para filtrar linhas em um DataFrame
filtrar_linhas <- function(data_frame, condicao) {
  return(data_frame[condicao, , drop = FALSE])
}

# Testando a função
print(filtrar_linhas(dados, dados$Idade > 25))
##   Nome Idade Nota
## 2  Bob    30   85

Neste exemplo, a função filtrar_linhas recebe um DataFrame e uma condição, retornando um novo DataFrame contendo apenas as linhas que satisfazem a condição.

2.10.3 Criação de Novas Variáveis em um DataFrame:

Vamos criar uma função que adiciona uma nova coluna a um DataFrame com base em uma operação:

# Função para criar nova variável em um DataFrame
criar_nova_variavel <- function(data_frame) {
  data_frame$Resultado <- ifelse(data_frame$Nota >= 90, "Aprovado", "Reprovado")
  return(data_frame)
}

# Testando a função
print(criar_nova_variavel(dados))
##      Nome Idade Nota Resultado
## 1   Alice    25   90  Aprovado
## 2     Bob    30   85 Reprovado
## 3 Charlie    22   95  Aprovado

Neste exemplo, a função criar_nova_variavel adiciona uma nova coluna chamada “Resultado” ao DataFrame com base em uma condição de nota.

3. Gráficos no R

3.1 A importância da representação visual

A visualização de dados é uma ferramenta para explorar padrões, identificar tendências e comunicar insights. A representação visual torna a informação mais acessível e compreensível, permitindo uma análise mais rápida e eficaz.

  • Facilita a Compreensão:

    • Gráficos simplificam conceitos complexos, tornando-os mais fáceis de entender.
  • Identificação de Padrões:

    Visualizar dados ajuda na identificação rápida de padrões e anomalias.

  • Tomada de Decisões Informada:

    • Gráficos auxiliam na tomada de decisões informadas, baseadas em evidências visuais.
  • Comunicação Eficaz:

    • Apresentar informações visualmente é mais eficaz ao comunicar resultados a públicos diversos.

3.2 Pacote Básico do R

O pacote básico do R, ou seja, o que vem de padrão em sua instalação já traz uma ferramente gráfica muito útil e que apresentaremos a seguir.

3.2.1 Gráfico de Dispersão

O gráfico de dispersão é uma ferramenta muito utilizada na visualização de dados, especialmente quando queremos explorar a relação entre duas variáveis. Ele é eficaz para identificar padrões, tendências, e verificar se existe uma correlação entre os conjuntos de dados.

# Criando dados de exemplo
x <- c(1, 2, 3, 4, 5)
y <- c(3, 5, 7, 8, 10)

# Criando o gráfico de dispersão simples
plot(x, y,)

Neste exemplo simples, criamos um gráfico de dispersão usando os vetores x e y. Os parâmetros main, xlab, ylab, pch, e col são utilizados para adicionar um título, rótulos nos eixos, alterar o símbolo dos pontos e definir a cor.

Exemplo 2 - Personalizando Cores e Rótulos:

# Criando dados de exemplo
x <- c(1, 2, 3, 4, 5)
y <- c(3, 5, 7, 8, 10)

# Criando o gráfico de dispersão personalizado
plot(x, y, main="Gráfico de Dispersão Personalizado", 
     xlab="Variável X", ylab="Variável Y", pch=8, col="green")

Neste exemplo, personalizamos ainda mais o gráfico, alterando a cor dos pontos para verde e adicionando um título principal, subtítulo, além de definir cores diferentes para o título e o subtítulo.

3.2.2 Gráfico de Linhas

O gráfico de linhas é fundamental para representar a variação de uma variável ao longo do tempo ou de uma sequência ordenada. Ele é utilizado em diversas áreas, desde finanças até ciências naturais (séries temporais).

# Criando dados de exemplo
tempo <- 1:10
dados <- c(3, 5, 8, 12, 9, 15, 18, 22, 20, 25)

# Criando o gráfico de linhas simples
plot(tempo, dados, type="l", col="red", lwd=2,
     main="Gráfico de Linhas Simples", xlab="Tempo", ylab="Dados")

Neste exemplo, utilizamos a função plot() com o parâmetro type="l" para criar um gráfico de linhas. Os parâmetros col e lwd são utilizados para definir a cor da linha e a largura da linha, respectivamente.

3.2.3 Gráfico de Barras/Colunas

O gráfico de barras é a formas mais comuns de representar dados categóricos. Ele é eficaz na comparação de quantidades entre diferentes categorias.

# Criando dados de exemplo
categorias <- c("A", "B", "C", "D", "E")
quantidades <- c(15, 22, 30, 18, 25)

# Criando o gráfico de barras simples
barplot(quantidades, names.arg=categorias, col="orange",
        main="Gráfico de Barras Simples", xlab="Categorias",
        ylab="Quantidades")

Neste exemplo, utilizamos a função barplot() para criar um gráfico de barras simples. Os parâmetros names.arg são utilizados para definir os rótulos das categorias, e col define a cor das barras.

3.2.3 Gráfico de Histograma

O gráfico de histograma é utilizado para representar a distribuição de uma variável contínua. Ele é valioso para entender a forma da distribuição, identificar padrões e visualizar a concentração de dados em diferentes intervalos.

# Criando dados de exemplo
dados <- c(10, 35, 20, 35, 30, 35, 30, 35, 30, 55, 60, 45, 60)

# Criando o histograma simples
hist(dados, col="skyblue", main="Histograma Simples", 
     xlab="Intervalos",
     ylab="Frequência")

Neste exemplo, utilizamos a função hist() para criar um histograma simples. O parâmetro col define a cor das barras.

3.2.4 Gráfico de Setores

O gráfico de setores, também conhecido como gráfico de pizza, é uma forma de representar proporções em um todo. Ele destaca a participação de cada categoria em relação ao total.

# Criando dados de exemplo
proporcoes <- c(0.3, 0.2, 0.15, 0.1, 0.25)
categorias <- c("A", "B", "C", "D", "E")

# Criando o gráfico de setores simples
pie(proporcoes, labels=categorias, 
    col=c("red", "green", "blue", "orange","purple"),
    main="Gráfico de Setores Simples")

Neste exemplo, utilizamos a função pie() para criar um gráfico de setores simples. Os parâmetros labels são utilizados para definir os rótulos das categorias, e col define as cores das fatias.

3.2.5 Gráfico de Caixa

O gráfico de caixa, ou boxplot, é uma ferramenta utilizada para representar a distribuição estatística de um conjunto de dados. Ele fornece informações sobre a mediana, quartis, e identifica a presença de outliers.

# Criando dados de exemplo
grupo1 <- c(20, 25, 30, 35, 40)
grupo2 <- c(15, 18, 22, 27, 32)

# Criando o gráfico de caixa simples
boxplot(grupo1, grupo2, col=c("skyblue", "salmon"),
        names=c("Grupo 1", "Grupo 2"), 
        main="Gráfico de Caixa Simples", ylab="Valores")

Neste exemplo, utilizamos a função boxplot() para criar um gráfico de caixa com dois grupos. Os parâmetros col definem as cores dos boxplots e names atribuem rótulos aos grupos.

3.3 Pacote ggplot2

O pacote ggplot2 é uma ferramenta para criar gráficos no ambiente estatístico R. Desenvolvido por Hadley Wickham, o ggplot2 segue a filosofia da “Gramática dos Gráficos” (Grammar of Graphics), proporcionando uma abordagem para a construção de visualizações complexas de maneira intuitiva e elegante.

Principais Características do ggplot2:

  1. Gramática dos Gráficos:
    • O ggplot2 baseia-se no princípio da “Gramática dos Gráficos”, que envolve a construção de gráficos através da combinação de elementos fundamentais, como dados, estética, geometria e camadas.
  2. Sintaxe Intuitiva:
    • A sintaxe do ggplot2 é projetada para ser intuitiva e fácil de compreender. Os usuários podem construir gráficos complexos com apenas algumas linhas de código.
  3. Camadas (Layers):
    • O conceito de camadas permite a sobreposição de diferentes elementos visuais, como pontos, linhas e barras, criando visualizações ricas e informativas.
  4. Facetas e Cores Dinâmicas:
    • Facetas permitem a criação de subgráficos com base em variáveis específicas, enquanto o controle dinâmico de cores facilita a representação de informações adicionais nos gráficos.

3.3.1 Gráfico de Dispersão

Vamos criar um gráfico de dispersão utilizando o ggplot2. Neste exemplo, usaremos dados fictícios para representar a relação entre duas variáveis.

# Instalação e carregamento do pacote ggplot2 
#(caso ainda não esteja instalado)
# install.packages("ggplot2")
library(ggplot2)

# Criando dados de exemplo
dados_dispersao <- data.frame(x = c(2, 4, 6, 8, 10),
                               y = c(5, 7, 9, 12, 15))

# Criando o gráfico de dispersão com ggplot2
ggplot(dados_dispersao, aes(x = x, y = y)) +
  geom_point(color = "blue", size = 3) +
  labs(title = "Gráfico de Dispersão com ggplot2",
       x = "Variável X",
       y = "Variável Y")

Explicação dos Recursos Utilizados:

  1. ggplot(): Esta função inicia a construção do gráfico e define o conjunto de dados (dados_dispersao) a ser utilizado.

  2. aes(): Dentro da função ggplot(), a função aes() (aesthetic) mapeia as variáveis estéticas, associando as variáveis do conjunto de dados (x e y) aos eixos do gráfico.

  3. geom_point(): Adiciona uma camada ao gráfico, representando os pontos de dispersão. O argumento color define a cor dos pontos, e size determina o tamanho dos pontos.

  4. labs(): Utilizada para adicionar rótulos aos eixos (x e y) e um título (title) ao gráfico.

3.3.2 Gráfico de Linhas

Vamos criar um gráfico de linhas simples utilizando o ggplot2.

# Instalação e carregamento do pacote ggplot2 
library(ggplot2)

# Criando dados de exemplo
dados_linhas <- 
  data.frame(tempo = 1:10,
             valores = c(3, 5, 8, 12, 9, 15, 18, 22, 20, 25))

# Criando o gráfico de linhas com ggplot2
ggplot(dados_linhas, aes(x = tempo, y = valores)) +
  geom_line(color = "red", size = 2) +
  labs(title = "Gráfico de Linhas com ggplot2",
       x = "Tempo",
       y = "Valores")
## Warning: Using `size` aesthetic for lines was deprecated in ggplot2 3.4.0.
## ℹ Please use `linewidth` instead.
## This warning is displayed once every 8 hours.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.

Explicação dos Recursos Utilizados:

  1. ggplot(): Inicia a construção do gráfico e define o conjunto de dados (dados_linhas) a ser utilizado.

  2. aes(): Mapeia as variáveis estéticas, associando as variáveis do conjunto de dados (tempo e valores) aos eixos do gráfico.

  3. geom_line(): Adiciona uma camada ao gráfico, representando as linhas. O argumento color define a cor das linhas, e size determina a espessura das linhas.

  4. labs(): Utilizada para adicionar rótulos aos eixos (x e y) e um título (title) ao gráfico.

No exemplo, o eixo x representa o “Tempo”, e o eixo y representa os “Valores”. Cada ponto no gráfico é conectado por uma linha, mostrando a variação dos valores ao longo do tempo. A cor das linhas é definida como vermelha, e a espessura é configurada como 2.

3.3.3 Gráfico de Barras/Colunas

Vamos criar um gráfico de barras utilizando o ggplot2.

# Instalação e carregamento do pacote ggplot2 
#(caso ainda não esteja instalado)
# install.packages("ggplot2")
library(ggplot2)

# Criando dados de exemplo
dados_barras <- data.frame(categorias = c("A", "B", "C", "D", "E"),
                            quantidades = c(15, 22, 30, 18, 25))

# Criando o gráfico de barras com ggplot2
ggplot(dados_barras, aes(x = categorias, y = quantidades, 
                         fill = categorias)) +
  geom_bar(stat = "identity", color = "black") +
  labs(title = "Gráfico de Barras com ggplot2",
       x = "Categorias",
       y = "Quantidades") +
  theme_minimal()

Explicação dos Recursos Utilizados:

  1. ggplot(): Inicia a construção do gráfico e define o conjunto de dados (dados_barras) a ser utilizado.

  2. aes(): Mapeia as variáveis estéticas, associando as variáveis do conjunto de dados (categorias e quantidades) aos eixos do gráfico. O argumento fill define as cores das barras com base nas categorias.

  3. geom_bar(): Adiciona uma camada ao gráfico, representando as barras. O argumento stat = "identity" indica que as alturas das barras são fornecidas diretamente no conjunto de dados. O argumento color define a cor das bordas das barras.

  4. labs(): Utilizada para adicionar rótulos aos eixos (x e y) e um título (title) ao gráfico.

  5. theme_minimal(): Aplica um tema minimalista ao gráfico para melhorar a estética.

No exemplo, o eixo x representa as “Categorias”, e o eixo y representa as “Quantidades”. Cada barra no gráfico representa a quantidade de itens em cada categoria. As cores das barras são definidas com base nas categorias. O gráfico de barras fornece uma representação visual clara das quantidades em diferentes categorias.

3.3.4 Gráfico de Histograma

Vamos criar um gráfico de histograma utilizando o ggplot2.

# Instalação e carregamento do pacote ggplot2 
#(caso ainda não esteja instalado)
# install.packages("ggplot2")
library(ggplot2)

# Criando dados de exemplo
dados_histograma <- data.frame(
  valores = c(18, 22, 25, 28, 30, 35, 38, 40, 42, 45))

# Criando o gráfico de histograma com ggplot2
ggplot(dados_histograma, aes(x = valores, 
                             fill = cut(valores, 
                                        breaks = seq(15, 50, 
                                                     by = 10)))) +
  geom_histogram(binwidth = 5, color = "black", 
                 position = "identity") +
  labs(title = "Gráfico de Histograma com ggplot2",
       x = "Valores",
       y = "Frequência") +
  scale_fill_brewer(palette = "Blues") +
  theme_minimal()

Explicação dos Recursos Utilizados:

  1. ggplot(): Inicia a construção do gráfico e define o conjunto de dados (dados_histograma) a ser utilizado.

  2. aes(): Mapeia as variáveis estéticas, associando as variáveis do conjunto de dados (valores) ao eixo x do gráfico. O argumento fill define a cor das barras com base nas faixas de valores (cut).

  3. geom_histogram(): Adiciona uma camada ao gráfico, representando o histograma. O argumento binwidth define a largura dos intervalos, color determina a cor das bordas das barras, e position = "identity" mantém as barras adjacentes.

  4. labs(): Utilizada para adicionar rótulos aos eixos (x e y) e um título (title) ao gráfico.

  5. scale_fill_brewer(): Define a paleta de cores utilizada para preencher as barras do histograma. Neste exemplo, utilizamos a paleta de cores “Blues”.

  6. theme_minimal(): Aplica um tema minimalista ao gráfico para melhorar a estética.

No exemplo, o eixo x representa os “Valores”, e o eixo y representa a “Frequência”. Cada barra no gráfico representa a frequência dos valores em intervalos específicos. A paleta de cores utilizada ajuda a destacar as diferentes faixas de valores no histograma.

3.3.5 Gráfico de Setores

Vamos criar um gráfico de setores utilizando o ggplot2.

# Instalação e carregamento do pacote ggplot2 
#(caso ainda não esteja instalado)
# install.packages("ggplot2")
library(ggplot2)

# Criando dados de exemplo
dados_setores <- 
  data.frame(categorias = c("A", "B", "C", "D", "E"),
                             proporcoes = 
               c(0.3, 0.2, 0.15, 0.1, 0.25))

# Criando o gráfico de setores com ggplot2
ggplot(dados_setores, aes(x = "",
                          y = proporcoes, fill = categorias)) +
  geom_bar(stat = "identity", width = 1) +
  coord_polar(theta = "y") +
  labs(title = "Gráfico de Setores com ggplot2") +
  theme_minimal() +
  theme(axis.text = element_blank(), axis.title = element_blank())

Explicação dos Recursos Utilizados:

  1. ggplot(): Inicia a construção do gráfico e define o conjunto de dados (dados_setores) a ser utilizado.

  2. aes(): Mapeia as variáveis estéticas, associando as variáveis do conjunto de dados (proporcoes e categorias) aos eixos do gráfico. O eixo x é definido como vazio ("") para criar um gráfico de setores.

  3. geom_bar(): Adiciona uma camada ao gráfico, representando os setores. O argumento stat = "identity" indica que as alturas das barras são fornecidas diretamente no conjunto de dados. O argumento width = 1 define a largura das barras como 1.

  4. coord_polar(): Converte o gráfico em coordenadas polares para criar um gráfico de setores.

  5. labs(): Utilizada para adicionar um título (title) ao gráfico.

  6. theme_minimal(): Aplica um tema minimalista ao gráfico para melhorar a estética.

  7. theme(): Remove os textos dos eixos x e y para criar um gráfico de setores mais limpo.

No exemplo, o gráfico de setores representa proporções em diferentes categorias. Cada setor representa a proporção da categoria em relação ao total. A utilização de coordenadas polares facilita a construção de um gráfico de setores visualmente atraente e informativo.

3.3.6 Gráfico de Caixa

Vamos criar um gráfico de caixa utilizando o ggplot2.

# Instalação e carregamento do pacote ggplot2 
#(caso ainda não esteja instalado)
# install.packages("ggplot2")
library(ggplot2)

# Criando dados de exemplo
grupo1 <- c(20, 25, 30, 35, 40)
grupo2 <- c(15, 18, 22, 27, 32)

# Criando o gráfico de caixa com ggplot2
dados_caixa <- data.frame(grupo = factor(rep(1:2, each = 5)),
                          valores = c(grupo1, grupo2))

ggplot(dados_caixa, aes(x = grupo, y = valores, fill = grupo)) +
  geom_boxplot(width = 0.5, outlier.shape = NA) +
  labs(title = "Gráfico de Caixa com ggplot2",
       x = "Grupo",
       y = "Valores") +
  scale_fill_brewer(palette = "Set2") +
  theme_minimal()

Explicação dos Recursos Utilizados:

  1. ggplot(): Inicia a construção do gráfico e define o conjunto de dados (dados_caixa) a ser utilizado.

  2. aes(): Mapeia as variáveis estéticas, associando as variáveis do conjunto de dados (grupo e valores) aos eixos do gráfico. O argumento fill define a cor das caixas com base nos grupos.

  3. geom_boxplot(): Adiciona uma camada ao gráfico, representando os boxplots. O argumento width define a largura das caixas, e outlier.shape = NA remove a representação gráfica de outliers.

  4. labs(): Utilizada para adicionar rótulos aos eixos (x e y) e um título (title) ao gráfico.

  5. scale_fill_brewer(): Define a paleta de cores utilizada para preencher as caixas dos boxplots. Neste exemplo, utilizamos a paleta de cores “Set2”.

  6. theme_minimal(): Aplica um tema minimalista ao gráfico para melhorar a estética.

No exemplo, o gráfico de caixa representa a distribuição estatística dos valores em dois grupos distintos. Cada caixa do boxplot indica a mediana, quartis e possíveis outliers nos dados. As cores diferenciadas facilitam a comparação entre os grupos.

Aqui concluímos o nosso capítulo. Em seguida, exploraremos conceitos avançados de matemática e estatística, baseando-nos no R para alcançar o êxito em nossa jornada. O R será a nossa principal e fundamental ferramenta para lidar com o grande volume de dados e cálculos necessários neste curso.

Assim, querendo aprofundar seus estudos, procure as demais sequências deste material, do qual citamos Frequência e Medidas, Probabilidae, Teste Estatísticos e Correlação e Regressão