Introdução ao R e RStudio

Author

Letícia Raposo

Published

June 19, 2024

0.1 Objetivos da Aula

  • Entender o que é o R e suas aplicações.
  • Aprender a instalar e configurar o R e o RStudio.
  • Conhecer os tipos de dados e estruturas básicas em R.
  • Realizar operações básicas com dados.
  • Manipular dados utilizando funções do R.
  • Conhecer noções básicas de programação em R.

1 1. O que é o R

R é uma linguagem de programação e um ambiente de desenvolvimento para computação estatística e gráficos. É amplamente utilizada por estatísticos, cientistas de dados e analistas para desenvolver software estatístico e realizar análises de dados.

1.1 Popularidade do R

  • Comunidade ativa: A comunidade do R é grande e ativa, contribuindo com pacotes e suporte.
  • Gratuito e Open Source: R é gratuito para usar e distribuir, e seu código-fonte está disponível para que todos possam ver e modificar.
  • Flexibilidade: Pode ser usado para análise de dados simples e complexa, desde estatísticas descritivas até modelos de aprendizado de máquina.

2 2. Instalação e Configuração

2.1 Instalando o R

Para instalar o R, siga as instruções no site oficial: CRAN R Project.

2.2 Instalando o RStudio

RStudio é uma IDE (Integrated Development Environment) que facilita o uso do R. Faça o download em: RStudio Download.

2.3 Componentes do RStudio

  • Console: Onde você pode executar comandos diretamente.
  • Editor de Scripts: Onde você escreve e salva seu código.
  • Ambiente de Trabalho: Onde você pode ver os objetos que você criou.
  • Painel de Plotagem: Onde seus gráficos são exibidos.

3 3. Tipos de Dados e Estruturas Básicas

3.1 Tipos de Dados

3.1.1 Números

a <- 5
b <- 5.7

3.1.2 Caracteres

nome <- "João"
sobrenome <- "Silva"

3.1.3 Lógicos

verdadeiro <- TRUE
falso <- FALSE

3.1.4 Fatores

# Criando um fator
genero <- factor(c("masculino", "feminino", "feminino", "masculino"))
levels(genero)
[1] "feminino"  "masculino"
# Mudando os níveis de um fator
levels(genero) <- c("F", "M")

3.2 Estruturas de Dados

3.2.1 Vetores

Um vetor em R é uma estrutura de dados básica que pode armazenar uma coleção de elementos do mesmo tipo. Os tipos de dados mais comuns que podem ser armazenados em vetores são números, caracteres e valores lógicos (TRUE/FALSE).

# Criando um vetor
numeros <- c(1, 2, 3, 4, 5)
caracteres <- c("a", "b", "c")
logicos <- c(TRUE, FALSE, TRUE)

3.2.2 Matrizes

Uma matriz em R é uma estrutura de dados bidimensional que pode armazenar elementos do mesmo tipo, dispostos em linhas e colunas. As matrizes são úteis para representar tabelas de dados onde todas as entradas são do mesmo tipo, como números.

# Criando uma matriz
matriz <- matrix(1:9, nrow = 3, ncol = 3)

# Acessando o elemento na linha 2, coluna 3
matriz[2, 3]
[1] 8
# Acessando toda a linha 1
matriz[1, ]
[1] 1 4 7
# Acessando toda a coluna 2
matriz[, 2]
[1] 4 5 6

3.2.3 Listas

Em R, uma lista é uma estrutura de dados que pode armazenar elementos de diferentes tipos e tamanhos. Isso inclui números, caracteres, vetores, matrizes, outros data frames e até outras listas. As listas são muito flexíveis e são frequentemente usadas para armazenar resultados de operações complexas e dados heterogêneos.

# Criando uma lista com diferentes tipos de dados
minha_lista <- list(
  nome = "João",
  idade = 25,
  altura = 1.75,
  notas = c(90, 85, 88),
  dados_extras = list(cidade = "São Paulo", país = "Brasil")
)
minha_lista
$nome
[1] "João"

$idade
[1] 25

$altura
[1] 1.75

$notas
[1] 90 85 88

$dados_extras
$dados_extras$cidade
[1] "São Paulo"

$dados_extras$país
[1] "Brasil"
# Acessando o primeiro elemento da lista
minha_lista[[1]]
[1] "João"
# Acessando o elemento 'nome'
minha_lista$nome
[1] "João"
# Acessando o elemento 'notas'
minha_lista$notas
[1] 90 85 88
# Acessando 'cidade' dentro de 'dados_extras'
minha_lista$dados_extras$cidade
[1] "São Paulo"
# Modificando o elemento 'idade'
minha_lista$idade <- 26

# Adicionando um novo elemento à lista
minha_lista$profissao <- "Engenheiro"
minha_lista
$nome
[1] "João"

$idade
[1] 26

$altura
[1] 1.75

$notas
[1] 90 85 88

$dados_extras
$dados_extras$cidade
[1] "São Paulo"

$dados_extras$país
[1] "Brasil"


$profissao
[1] "Engenheiro"
# Obtendo o número de elementos na lista
length(minha_lista)
[1] 6
# Obtendo os nomes dos elementos na lista
names(minha_lista)
[1] "nome"         "idade"        "altura"       "notas"        "dados_extras"
[6] "profissao"   
# Exibindo a estrutura da lista
str(minha_lista)
List of 6
 $ nome        : chr "João"
 $ idade       : num 26
 $ altura      : num 1.75
 $ notas       : num [1:3] 90 85 88
 $ dados_extras:List of 2
  ..$ cidade: chr "São Paulo"
  ..$ país  : chr "Brasil"
 $ profissao   : chr "Engenheiro"

3.2.4 Data Frames

Em R, um data frame é uma estrutura de dados bidimensional que pode armazenar dados de diferentes tipos (números, caracteres, fatores, etc.) em colunas. Cada coluna de um data frame representa uma variável e cada linha representa uma observação. Data frames são amplamente utilizados para armazenar e manipular conjuntos de dados tabulares em R.

# Criando um data frame
dados <- data.frame(
  nome = c("Ana", "Bruno", "Carlos"),
  idade = c(23, 35, 28),
  altura = c(1.68, 1.75, 1.80)
)

# Acessando a coluna 'nome'
dados$nome
[1] "Ana"    "Bruno"  "Carlos"
# Acessando o elemento na primeira linha e segunda coluna
dados[1, 2]
[1] 23
# Acessando a primeira linha inteira
dados[1, ]
  nome idade altura
1  Ana    23   1.68
# Acessando a segunda coluna inteira
dados[, 2]
[1] 23 35 28
# Acessando a coluna 'idade' usando a notação de colchetes
dados[,"idade"]
[1] 23 35 28
# Acessando múltiplas colunas por nome
dados[, c("nome", "altura")]
    nome altura
1    Ana   1.68
2  Bruno   1.75
3 Carlos   1.80
# Modificando o valor de um elemento específico
dados[1, 2] <- 24

# Adicionando uma nova coluna
dados$peso <- c(65, 70, 80)
dados
    nome idade altura peso
1    Ana    24   1.68   65
2  Bruno    35   1.75   70
3 Carlos    28   1.80   80

3.2.4.1 Funções Úteis para Data Frames:

  • str(): Exibe a estrutura interna de um data frame.
  • summary(): Fornece um resumo estatístico das colunas do data frame.
  • head(): Exibe as primeiras linhas do data frame.
  • tail(): Exibe as últimas linhas do data frame.
  • dim(): Retorna as dimensões do data frame (número de linhas e colunas).
  • nrow(): Retorna o número de linhas.
  • ncol(): Retorna o número de colunas.
  • names(): Retorna ou define os nomes das colunas.
# Exibindo a estrutura do data frame
str(dados)
'data.frame':   3 obs. of  4 variables:
 $ nome  : chr  "Ana" "Bruno" "Carlos"
 $ idade : num  24 35 28
 $ altura: num  1.68 1.75 1.8
 $ peso  : num  65 70 80
# Resumo estatístico dos dados
summary(dados)
     nome               idade          altura           peso      
 Length:3           Min.   :24.0   Min.   :1.680   Min.   :65.00  
 Class :character   1st Qu.:26.0   1st Qu.:1.715   1st Qu.:67.50  
 Mode  :character   Median :28.0   Median :1.750   Median :70.00  
                    Mean   :29.0   Mean   :1.743   Mean   :71.67  
                    3rd Qu.:31.5   3rd Qu.:1.775   3rd Qu.:75.00  
                    Max.   :35.0   Max.   :1.800   Max.   :80.00  
# Exibindo as primeiras linhas do data frame
head(dados)
    nome idade altura peso
1    Ana    24   1.68   65
2  Bruno    35   1.75   70
3 Carlos    28   1.80   80
# Exibindo as últimas linhas do data frame
tail(dados)
    nome idade altura peso
1    Ana    24   1.68   65
2  Bruno    35   1.75   70
3 Carlos    28   1.80   80
# Obtendo as dimensões do data frame
dim(dados)
[1] 3 4
# Número de linhas
nrow(dados)
[1] 3
# Número de colunas
ncol(dados)
[1] 4
# Nomes das colunas
names(dados)
[1] "nome"   "idade"  "altura" "peso"  

4 4. Operações Básicas

4.1 Operações Aritméticas

2 + 2
[1] 4
5 - 3
[1] 2
4 * 6
[1] 24
8 / 2
[1] 4

4.2 Operações Lógicas

5 > 3
[1] TRUE
4 == 4
[1] TRUE
TRUE & FALSE
[1] FALSE
TRUE | FALSE
[1] TRUE

4.3 Funções Básicas

print("Hello, R!")
[1] "Hello, R!"
length(numeros)
[1] 5
sum(numeros)
[1] 15
mean(numeros)
[1] 3

5 5. Manipulação de Dados

5.1 Subset

# Selecionando um subconjunto de dados
subset(dados, idade > 25)
    nome idade altura peso
2  Bruno    35   1.75   70
3 Carlos    28   1.80   80
# Salvando em um novo conjunto de dados
dados2 <- subset(dados, idade > 25)

5.2 Filter, Select, Mutate, Arrange (usando dplyr)

library(dplyr)

# Filtrando dados
dados_filtrados <- filter(dados, idade > 25)

# Selecionando colunas
dados_selecionados <- select(dados, nome, altura)

# Criando nova coluna
dados_mutados <- mutate(dados, altura_cm = altura * 100)

# Ordenando dados
dados_ordenados <- arrange(dados, desc(idade))

# Encadeando as operações com %>%
dados_final <- dados %>%
  filter(idade > 25) %>%
  select(idade, altura) %>%
  mutate(altura_cm = altura * 100) %>%
  arrange(desc(idade))
dados_final
  idade altura altura_cm
1    35   1.75       175
2    28   1.80       180

6 6. Programação em R

6.1 Estruturas de Controle

6.1.1 If-Else

x <- 5
if (x > 3) {
  print("x é maior que 3")
} else {
  print("x não é maior que 3")
}
[1] "x é maior que 3"

6.1.2 For Loop

O loop for é usado para iterar sobre uma sequência de valores. Aqui estão alguns exemplos mais elaborados:

# Exemplo: 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
# Exemplo: Calculando a soma de um vetor

numeros <- c(1, 2, 3, 4, 5)
soma <- 0
for (num in numeros) {
  soma <- soma + num
}
soma
[1] 15
# Exemplo: Iterando sobre um data frame

dados <- data.frame(
  nome = c("Ana", "Bruno", "Carlos"),
  idade = c(23, 35, 28),
  altura = c(1.68, 1.75, 1.80)
)

for (i in 1:nrow(dados)) {
  cat("Nome:", dados$nome[i], "- Idade:", dados$idade[i], "- Altura:", dados$altura[i], "\n")
}
Nome: Ana - Idade: 23 - Altura: 1.68 
Nome: Bruno - Idade: 35 - Altura: 1.75 
Nome: Carlos - Idade: 28 - Altura: 1.8 

6.1.3 While Loop

O loop while continua a execução enquanto a condição especificada for verdadeira.

# Exemplo: Contando até 10
count <- 1
while (count <= 5) {
  print(count)
  count <- count + 1
}
[1] 1
[1] 2
[1] 3
[1] 4
[1] 5
# Exemplo: Somando números até a soma atingir um valor limite

limite <- 20
soma <- 0
numero <- 1

while (soma < limite) {
  soma <- soma + numero
  numero <- numero + 1
}
soma
[1] 21

6.1.4 Apply

A função apply() em R é uma ferramenta poderosa para aplicar uma função a margens específicas (linhas ou colunas) de uma matriz ou array. Ela é frequentemente usada para evitar loops explícitos, tornando o código mais conciso e, em muitos casos, mais eficiente.

# Usando apply em uma matriz
matriz <- matrix(1:9, nrow=3)
apply(matriz, 1, sum)
[1] 12 15 18
# X: A matriz ou array a ser usada.
# MARGIN: Um inteiro que indica se a função deve ser aplicada a linhas (1), colunas (2), ou ambos (c(1, 2)).
# FUN: A função a ser aplicada.

# Aplicando a função mean para calcular a média de cada coluna
media_colunas <- apply(matriz, 2, mean)
media_colunas
[1] 2 5 8

6.1.4.1 Comparação com Funções lapply() e sapply()

  • lapply(): Aplica uma função a cada elemento de uma lista e retorna uma lista.
  • sapply(): Aplica uma função a cada elemento de uma lista e simplifica o resultado, retornando um vetor ou matriz quando possível.
# Exemplo: Usando lapply() com Data Frames

# Criando um data frame de exemplo
df <- data.frame(
  A = 1:5,
  B = 6:10,
  C = 11:15
)

# Aplicando a função sum a cada coluna do data frame usando lapply()
resultados_lapply <- lapply(df, sum)
resultados_lapply
$A
[1] 15

$B
[1] 40

$C
[1] 65
# Exemplo: Usando sapply() com Data Frames

# Aplicando a função mean a cada coluna do data frame usando sapply()
resultados_sapply <- sapply(df, mean)
resultados_sapply
 A  B  C 
 3  8 13 

7 Conclusão

Nesta aula, cobrimos os conceitos básicos do R, incluindo a instalação, tipos de dados, estruturas de dados, operações básicas, manipulação de dados e introdução à programação em R. Em aulas futuras, aprofundaremos nosso conhecimento em análise de dados e visualização.