1  Introdução ao R e RStudio

1.1 O que é o R?

O R é uma linguagem de programação e ambiente de software livre para computação estatística e gráficos. Atualmente o R se tornou uma das ferramentas mais populares para análise de dados, especialmente nas áreas de estatística, bioestatística e ciência de dados.

1.1.1 Vantagens do R

  • Gratuito e Open Source: O R é completamente gratuito e possui código aberto
  • Ampla Comunidade: Grande comunidade de usuários e desenvolvedores
  • Pacotes Especializados: Mais de 19.000 pacotes disponíveis no CRAN para diferentes análises
  • Gráficos de Alta Qualidade: Excelentes capacidades de visualização de dados
  • Reprodutibilidade: Facilita a pesquisa reproduzível através de scripts
  • Integração: Pode ser integrado com outras linguagens e ferramentas

1.1.2 Desvantagens do R

  • Curva de Aprendizado: Pode ser desafiador para iniciantes sem experiência em programação

1.2 Interface do RStudio

O RStudio é um ambiente de desenvolvimento integrado (IDE) para R que facilita significativamente o trabalho com a linguagem. A interface do RStudio é dividida em quatro painéis principais:

  1. Editor de Scripts (superior esquerdo): Onde você escreve e salva seus códigos

  2. Console (inferior esquerdo): Onde os comandos são executados e os resultados aparecem

  3. Environment/History (superior direito): Mostra objetos criados e histórico de comandos

  4. Files/Plots/Packages/Help (inferior direito): Gerenciamento de arquivos, visualização de gráficos, pacotes e ajuda

1.2.1 RStudio Projects

Os Projects do RStudio são uma forma de organizar seu trabalho. Ao criar um projeto:

  • Mantém todos os arquivos relacionados em um único diretório
  • Define o diretório de trabalho automaticamente
  • Preserva o histórico de comandos específico do projeto
  • Facilita o controle de versão com Git

Dica: Sempre use Projects para organizar suas análises!

1.3 Primeiros Passos com R

Vamos aprender os comandos básicos do R.

# O uso de # no início de uma linha significa uma linha de comentário
# Essa linha não é executada pelo R
# Use comentários para documentar seu código!

1.3.1 Declarando Variáveis

No R, usamos o operador <- para atribuir valores a variáveis.

Atalho útil: Alt + - (Windows) ou Option + - (Mac) insere automaticamente <-

Para executar código: Ctrl + Enter (Windows) ou Cmd + Enter (Mac)

# Declarando variáveis simples
a <- 1
b <- 2

# Operações matemáticas
a + b # soma
[1] 3
a - b # subtração
[1] -1
a * b # multiplicação
[1] 2
a / b # divisão
[1] 0.5
a^2 # exponenciação
[1] 1

1.3.2 Estruturas de Dados

O R possui diferentes estruturas para armazenar dados:

1.3.2.1 Vetores

Vetores são a estrutura mais simples, contendo elementos de um único tipo:

# Vetor numérico simples
a <- 1

# Vetor com múltiplos elementos
numeros <- c(1, 2, 3, 4, 5)

1.3.2.2 Listas

Listas podem conter diferentes tipos de dados:

# Lista com diferentes tipos de dados
a <- list("a", 1, "b")

1.3.2.3 Data Frames

O data frame é a estrutura mais importante para análise de dados - é equivalente a uma planilha do Excel.

# Criando um data frame com informações de pacientes
df <- data.frame(
  Nome = c("João", "José", "Maria", "Antônia"),
  Idade = c(65, 60, 22, 28),
  Sexo = c("Masculino", "Masculino", "Feminino", "Feminino"),
  CEP = c(85802159, 87945632, 89745632, 85706984),
  Curso = c("Nutrição", "Educação Física", "Fisioterapia", "Medicina")
)

# Visualizando o resumo dos dados
summary(df)
     Nome               Idade           Sexo                CEP          
 Length:4           Min.   :22.00   Length:4           Min.   :85706984  
 Class :character   1st Qu.:26.50   Class :character   1st Qu.:85778365  
 Mode  :character   Median :44.00   Mode  :character   Median :86873896  
                    Mean   :43.75                      Mean   :87300102  
                    3rd Qu.:61.25                      3rd Qu.:88395632  
                    Max.   :65.00                      Max.   :89745632  
    Curso          
 Length:4          
 Class :character  
 Mode  :character  
                   
                   
                   

1.3.2.4 Acessando Colunas de um Data Frame

O símbolo $ é usado para acessar colunas específicas de um data frame:

# A função plot é utilizada para visualizar dados

# Plotando a idade dos participantes

plot(df$Idade)

Gráfico de dispersão da idade dos participantes
# Podemos adicionar argumentos para uma função
plot(x = df$Idade,
     main = "Idade dos Participantes", # Título dos gráficos
     ylab = "Idade (anos)", # Título do eixo y
     xlab = "Indivíduos", # Título do eixo x
     col = "red") # Cor do gráfico

Gráfico de dispersão da idade dos participantes

1.3.2.5 Como saber os argumentos de uma função??

??plot # F1 ajuda a ter ajuda direto

1.3.2.6 Outros estilos de gráfico

boxplot(Idade ~ Sexo, 
        data = df, 
        xlab = "Sexo", 
        ylab = "Idade (anos)", 
        col = "navy")

1.3.3 Tipos de Dados no R

Compreender os tipos de dados é fundamental para trabalhar com R:

1.3.3.1 Numeric (Double)

Valores numéricos decimais:

a <- 1
a
[1] 1
[1] "numeric"

1.3.3.2 Integer

Valores numéricos inteiros (use L para especificar):

a <- 1L
a
[1] 1
[1] "integer"

1.3.3.3 Character

Dados de texto (strings):

a <- "1"
a
[1] "1"
[1] "character"

1.3.3.4 Factor

Dados categóricos (nominais ou ordinais):

a <- "1"
a <- as.factor(a)
class(a)
[1] "factor"

Fatores são essenciais para análises estatísticas com variáveis categóricas.

1.3.3.5 Logical (Booleano)

Valores lógicos TRUE (verdadeiro) ou FALSE (falso):

a <- 1
b <- 2
a == b  # Retorna FALSE
[1] FALSE

1.3.3.6 NA (Not Available)

Representa valores ausentes em um conjunto de dados:

a <- c(1, 2, NA)
a
[1]  1  2 NA
a + 2  # O NA se propaga nas operações
[1]  3  4 NA

1.3.4 Convertendo Tipos de Dados

Vamos aplicar o que aprendemos ao nosso data frame:

# Convertendo a variável Sexo para fator
df$Sexo <- as.factor(df$Sexo)

# Agora conseguimos criar um boxplot adequado
plot(x = df$Sexo,
     y = df$Idade,
     xlab = "Sexo",
     ylab = "Idade (anos)",
     col = c("lightblue", "lightpink"),
     main = "Distribuição de Idade por Sexo")

Distribuição de idade por sexo

1.4 Lógica de Programação no R

1.4.1 Operadores Lógicos

Os operadores lógicos são usados para realizar comparações:

Operador Significado
== Igual a
!= Diferente de
< Menor que
> Maior que
<= Menor ou igual
>= Maior ou igual
# Exemplos de operadores lógicos
1 > 2   # FALSE
[1] FALSE
1 < 2   # TRUE
[1] TRUE
1 <= 2  # TRUE
[1] TRUE
1 >= 2  # FALSE
[1] FALSE
1 != 2  # TRUE
[1] TRUE
2 == 2  # TRUE
[1] TRUE

Podemos aplicar operadores lógicos a colunas inteiras:

df$Idade > 50  # Quais idades são maiores que 50?
[1]  TRUE  TRUE FALSE FALSE
df$Idade >= 60  # Quais são idosos (>=60 anos)?
[1]  TRUE  TRUE FALSE FALSE

1.4.2 Condicionais: if, else, ifelse

1.4.2.1 Estrutura if-else

a <- 200
b <- 1

if (a > b) {
  print(paste(a, "é maior que", b))
} else {
  print(paste(a, "não é maior que", b))
}
[1] "200 é maior que 1"

1.4.2.2 Função ifelse

A função ifelse() é útil para vetorização de condições:

# Classificando idades em adultos e crianças
idades <- c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 21, 25, 38, 48, 54)
classificacao <- ifelse(idades >= 10, "Adulto", "Criança")
classificacao
 [1] "Criança" "Criança" "Criança" "Criança" "Criança" "Criança" "Criança"
 [8] "Criança" "Criança" "Adulto"  "Adulto"  "Adulto"  "Adulto"  "Adulto" 
[15] "Adulto" 

Aplicando ao nosso data frame:

# Classificando participantes como idosos ou adultos
classificacao_idade <- ifelse(df$Idade >= 60, "Idoso", "Adulto")
classificacao_idade
[1] "Idoso"  "Idoso"  "Adulto" "Adulto"

1.4.3 Manipulação de dados em um data.frame

Existem várias formas de manipular dados em um data.frame, vamos abordar algumas.

1.4.3.1 Adicionando uma nova coluna

Podemos adicionar uma nova coluna usando o operador $.

# Data.frame original - 5 colunas no total

df <- data.frame(Nome = c("João", "José", "Maria", "Antônia"),
                 Idade = c(65, 60, 22, 28),
                 Sexo = c("Masculino", "Masculino", "Feminino", "Feminino"),
                 CEP = c(85802159,87945632,89745632,85706984),
                 Curso = c("Nutrição", "Educação Física", "Fisioterapia", "Medicina")
)

df 
# Adicionando a coluna peso

df$peso <- c(60,90,120,40)

df

1.4.3.2 Adicionando uma nova coluna baseado nos dados usando ifelse

A estrutura do ifelse pode ser utilizada para classificar dados de uma coluna em uma outra coluna por meio de um teste lógico.

# Vamos adicionar uma coluna peso
df$classificacao_peso <- ifelse(df$peso < 50, "Magro",
                                ifelse(df$peso < 80, "Normal",
                                       ifelse(df$peso < 100, "Sobrepeso", "Obeso")))

df
# Também podemos operações nas colunas usando o $

df$peso_gramas <- df$peso * 1000

df

1.4.4 Loops: Operações Repetidas

Loops são úteis para realizar operações repetidas de forma automática.

1.4.4.1 Loop for básico

# Imprimindo números de 1 a 10
for (i in 1:10) {
  print(i)
}
[1] 1
[1] 2
[1] 3
[1] 4
[1] 5
[1] 6
[1] 7
[1] 8
[1] 9
[1] 10

1.4.4.2 Loop for com condicionais

Exemplo avançado: criando gráficos automaticamente para cada coluna do data frame:

# Loop para gerar gráficos de todas as colunas
for (col in names(df)) {
  if (is.numeric(df[[col]])) {
    # Se a coluna for numérica, cria gráfico de dispersão
    plot(df[[col]],
         main = paste("Gráfico da coluna:", col),
         xlab = "Índice",
         ylab = "Valor",
         col = "navy",
         pch = 16)
  } else if (is.factor(df[[col]])) {
    # Se a coluna for fator, cria gráfico de barras
    counts <- table(df[[col]])
    barplot(counts,
            main = paste("Distribuição da coluna:", col),
            col = "darkred",
            border = "black",
            xlab = "Categorias",
            ylab = "Frequência")
  }
}

Gráficos automáticos para cada variável do data frame

Gráficos automáticos para cada variável do data frame

Gráficos automáticos para cada variável do data frame

Gráficos automáticos para cada variável do data frame

1.5 Boas Práticas de Formatação de Código

Escrever código limpo e legível é essencial para:

  • Facilitar a manutenção e revisão do código
  • Permitir que outros entendam seu trabalho
  • Evitar erros e bugs
  • Promover colaboração

1.5.1 Uso de Espaços

Sempre use espaços ao redor de operadores para melhorar a legibilidade:

# ✓ CORRETO - Código legível
a <- 1
a <- 1 + 2 * 3

# ✗ ERRADO - Código difícil de ler
a<-1+2*3

1.5.2 Formatação de Data Frames

Compare as duas formas de criar o mesmo data frame:

# ✓ CORRETO - Cada argumento em uma linha, bem espaçado
df <- data.frame(
  Nome = c("João", "José", "Maria", "Antônia"),
  Idade = c(65, 60, 22, 28),
  Sexo = c("Masculino", "Masculino", "Feminino", "Feminino"),
  CEP = c(85802159, 87945632, 89745632, 85706984),
  Curso = c("Nutrição", "Educação Física", "Fisioterapia", "Medicina")
)
# ✗ ERRADO - Tudo em poucas linhas, difícil de ler
df <- data.frame(Nome=c("João","José","Maria","Antônia"),Idade=c(65,60,22,28),
                 Sexo=c("Masculino","Masculino","Feminino","Feminino"),
                 CEP=c(85802159,87945632,89745632,85706984),
                 Curso=c("Nutrição","Educação Física","Fisioterapia","Medicina"))

1.5.3 Convenções de Nomenclatura

Use snake_case (minúsculas com underline) para nomear variáveis e objetos:

# ✗ ERRADO - Nome com espaço (causa erro)
tabela 1 <- 1

# ✗ ERRADO - Mistura de maiúsculas e espaço
tabelA 1 <- 1

# ✓ CORRETO - snake_case
tabela_1 <- 1
dados_pacientes <- data.frame()
modelo_final <- lm()

1.5.4 Documentação com Comentários

Sempre documente seu código com comentários explicativos, isso servirá para quando você utilizar o código novamente no futuro.

1.6 Resumo do Capítulo

Neste capítulo, você aprendeu:

  • O que é o R e suas vantagens para análise de dados em saúde
  • Interface do RStudio e como organizá-la com Projects
  • Tipos de dados no R: numeric, integer, character, factor, logical, NA
  • Estruturas de dados: vetores, listas e data frames
  • Operadores lógicos e como usá-los para comparações
  • Condicionais com if-else e ifelse
  • Loops para automatizar tarefas repetitivas
  • Boas práticas de formatação e documentação de código

No próximo capítulo, você aprenderá a manipular dados de forma eficiente usando o pacote tidyverse, uma das ferramentas mais poderosas do ecossistema R.

1.7 Exercícios Práticos

  1. Crie um data frame com dados de 10 pacientes, incluindo as seguintes variáveis: nome, idade, peso, altura e diagnóstico

  2. Calcule o IMC (Índice de Massa Corporal) de cada paciente usando a fórmula: IMC = peso / altura²

  3. Use ifelse() para classificar os pacientes em: “Baixo peso” (IMC < 18.5), “Normal” (18.5 ≤ IMC < 25), “Sobrepeso” (25 ≤ IMC < 30), ou “Obesidade” (IMC ≥ 30)