Introdução ao R no Google Colab

R é uma linguagem de programação poderosa para análise de dados, gráficos e, especialmente, análise estatística. Está disponível gratuitamente ao público em www.r-project.org com binários de fácil instalação para Linux, MacOS e Windows. Este caderno oferece uma introdução ao R, projetado para estudantes e pesquisadores. Não é necessária experiência prévia, embora alguma familiaridade com linguagens de script como Bash, Matlab ou Python seja útil.
A melhor opção para programar em R é instalar o RStudio ou o Visual Studio Code. Aqui, aprenderemos alguns dos fundamentos do R e como carregar e processar dados.



Uma breve introdução

Ao começar em R (ou em qualquer linguagem de programação), passamos por três habilidades fundamentais:

  • 1. Ler Código: No início, você vai se deparar com códigos prontos. Ler é o primeiro passo para se familiarizar com a lógica, os comandos e a forma como o R “fala”. Exemplo: entender o que significa: mean(c(1, 2, 3)).
  • 2. Entender Código: Aqui você começa a saber por que aquele código está ali, o que ele faz e como ele se conecta com os dados. Exemplo: perceber que mean() calcula a média e c(1, 2, 3) cria um vetor (e o que é um vetor?)
  • 3. Escrever Código: O ápice do aprendizado! Com prática, você começa a escrever seus próprios scripts e funções — seja para fazer gráficos, análises ou automatizar tarefas. Exemplo: criar um gráfico com plot(x, y) e ajustar os parâmetros do jeito que você quiser.

  • Comentários

    comentários são partes de um programa de computador usadas para descrever um trecho de código. Podemos fazer um comentário usando o símbolo #.
    Finalidade dos comentários? Legibilidade, ignorar algum código, pseudocódigo

    
    # Tudo que começa com # é um comentário e não é executado
    # Isso serve para explicar o que o código faz
    # ou para deixar anotações ou lembretes
    # ou para desativar uma linha de código
    # ou para deixar um código mais legível ou organizado
                    

    Variável

    Diferentes tipos de valores, como caracteres, números ou lógicos, podem ser atribuídos a uma variável.

    
    x <- 10  # A forma mais comum de atribuição
    y = 20   # Também funciona                  
                    

    No R (e em praticamente todas as linguagens de programação), espaços em nomes de variáveis não são permitidos. Se você tentar escrever: idade do paciente <- 25
    O R vai dar erro, porque ele vai entender que você está tentando usar a variável idade, chamar a função do, acessar paciente… uma confusão total. Você pode usar o underscore (_) ou o ponto (.) ou camelCase para separar palavras em nomes de variáveis, como:

    
    idade_do_paciente <- 25
    idade.do.paciente <- 25
    IdadeDoPaciente <- 25                   
                    

    Ou seja, sempre que for criar uma variável, evite espaços e use caracteres permitidos. Perceba que mesmo cada jeito de escrever são aceitáveis, mas cada um cria uma variável diferente.


    R diferencia TUDO

    Quando falamos ou escrevemos com outras pessoas, entedemos pequenos erros, variações de linguagem e escritas erradas. O R não é assim.


    No R, "idade", "Idade", "idades" e "Idades" são nomes completamente diferentes. Isso porque a linguagem é case-sensitive (sensível a maiúsculas e minúsculas).


    E cada variável deve ser única dentro do mesmo ambiente de trabalho, ou seja cada vez que eu escrevo de um jeito diferente, eu crio um objeto novo. Isso é importante porque evita confusões e garante que você saiba exatamente qual variável está usando.
    Por isso, crie nomes de variáveis que façam sentido e sejam fáceis de lembrar e sejam diferentes o suficiente para que VOCÊ possa trabalhar.

    Regras para nomear variáveis:

  • Um nome de variável pode ser criado usando letras, dígitos, pontos e sublinhados.
  • Comece com letra (nunca com número!)
  • Se um nome de variável começar com um ponto, você não pode usar dígitos depois dele.
  • R (como outras linguagens de programação) diferencia maiúsculas de minúsculas. Isso significa que idade e Idade são variáveis diferentes.
  • Evite acentos e caracteres especiais
  • Seja descritivo, mas sem exagerar no tamanho
  • Escreva de forma simples e padronizada. Quanto mais clara for sua variável, mais fácil será reutilizá-la.
  • se_for_muito_longa_é_ruim_de_reutiliza
  • O que significa <-?

    Essa seta é usada para atribuir um valor a um objeto. É como dizer: “coloque esse valor aqui dentro dessa caixinha”. ou "x agora vale 10 e y agora vale 20".


    Mas a seta "<-" é a forma tradicional e mais usada pela comunidade R, especialmente em estatística e ciência de dados. É como uma tradição da linguagem — muitos dizem que a seta aponta de onde vem o valor e para onde ele vai.


    No teclado, para fazer <-, você digita < e depois -, e o R automaticamente entende como uma atribuição.

    Dados e Tipos de dados

    No R, os dados geralmente são organizados em tabelas (data frames), que parecem planilhas de Excel. Cada coluna representa uma variável (idade, nome, altura...) e cada linha representa uma observação (uma pessoa, um animal, um experimento...).
    Você pode criar dados manualmente:


    
    # Existem vários tipos de dados em R, mas os mais comuns são:
    # Números
    x <- 10.5  # Números decimais
    
    #Integer
    y <- 5L     # Números inteiros
    
    # Texto (chamamos de "strings")
    nome <- "meu nome é:"  # Texto entre aspas (complete com seu nome)
    
    # Lógicos (booleanos)
    verdadeiro <- TRUE  # Verdadeiro
    falso <- FALSE  # Falso
    
    # Vetores
    idades <- c(25, 30, 35)  # Vetor de números             
                    
    
                    

    c() é uma função que significa "combine" ou "concatenate", usada para criar vetores.


    Todos os elementos de um vetor devem ser do mesmo tipo. Se não utilizar o c(), o R não vai entender que você quer criar um vetor e vai dar erro. Quando você usa c(), o R entende que você está juntando esses valores em um único objeto, formando um vetor.


    Sempre que você quiser criar um vetor com VÁRIOS valores, seja números, textos ou lógicos.

    Data frame

    Um data.frame é como uma planilha de Excel: cada coluna é uma variável e cada linha é uma observação. Você pode importar do seus dados pessoais ou construir dentro do R.

    
    my_dataframe <- data.frame(
      Name = c("Camila", "Matias", "Juan"),
      Age = c(21,33,19),
      Student = c(TRUE, FALSE, TRUE)
    )
    
    my_dataframe                  
                    

    Matriz

    Uma matriz é uma tabela só de números (ou de um único tipo de dado), organizada em linhas e colunas, como em matemática.

    
    m <- matrix(1:9, nrow = 3, ncol = 3)
    
    m                   
                    

    Strings

    Em programação, strings são sequências de caracteres — ou seja, qualquer conjunto de letras, números, símbolos ou espaços. Elas são usadas para representar textos.

    
    # Finding the length of a string
    nchar(my_string1)
    
    # Joining strings together
    paste(my_string1, "2023")
    
    #Splitting strings
    txt<-("R is the statistical analysis language")
    unlist(strsplit(txt, split = " "))                    
                    

    Vector

    Um vetor é uma estrutura básica que armazena uma coleção de elementos do mesmo tipo — pode ser números, textos (strings), valores lógicos (TRUE/FALSE), etc. Vetores podem fazer operações como: somar, filtrar, comparar etc.

    
    # Vector
    my_vector1 <- c(1,2,3)
    my_vector2 <- c(4,5,6)
    another_vector <- c("Camila", "Matias", "Juan")
    
    class(my_vector1)
    my_vector1                 
                    
    
    class(another_vector)
    another_vector                    
                    
    
    # Creating vectors with R functions
    my_name <- rep("Alejandra", times = 5)
    my_name
    
    my_seq <- rep(c(1,3,5), times = 3)
    my_seq
    
    my_seq <- rep(c(1,3,5), each = 3)
    my_seq
    
    my_seq <- -10:10
    my_seq
    
    my_seq <- seq(from = -10, to = 10, by = 2)
    my_seq                   
                    

    List

    Uma lista é um “bolsão” que pode guardar qualquer coisa: números, textos, vetores, data.frames, até funções!
    Pense numa lista de compras: Sabão, Amacianete, Maçã, Laranja, Biscoito, Pão etc...

    Perceba que os itens não fazem parte das mesmas categorias (comida, itens de limpeza, produtos de higiene), mas todos estão na mesma lista. Funciona de forma similar no R:

    
    my_list <- list(City = "Salvador", Age = 476, Beaches = c(Barra, Itapuã, Piatã, Ribeira))
    
    my_list                    
                    

    Factor

    Um fator é usado para representar variáveis categóricas, como “sexo”, “estado civil”, “resposta: sim/não”. Por trás, o R trata esses valores como níveis numéricos com nomes.

    
    sex <- factor(c("F", "M", "F"))                    
                    

    O R entende isso como uma variável com dois níveis: “F” e “M”.

    Fatores são essenciais em análises estatísticas porque eles tratam categorias como níveis diferenciados, e não apenas texto qualquer.

    Operations in R

    R é uma linguagem criada por matemáticos para resolver problemas estatísticos e matemáticos. Por isso, realizar operações nessa linguagem é bastante semelhante ao que já conhecemos em matemática tradicional.

    
    my_result <- 2 + 3
    
    1 - my_result
    
    6 * 4
    
    2 ^ 3
    
    10 / 5
    
    log10(1000)
    
    log2(32)
    
    sqrt(144)                    
                    

    Vector Operations

    
    my_vector1
    my_vector2                    
                    
    
    # Finding the length of a vector
    length(my_vector1)                    
                    
    
    # Math
    my_vector1 * my_vector2
    my_vector1 + my_vector2
    my_vector1 - my_vector2
    my_vector1 / my_vector2                    
                    
    
    # Indexing is a way to select (include/exclude) particular elements from a variable
    my_vector2
    my_vector2[1]
    my_vector2[-c(1,3)]
    my_vector2[2:3]
    my_vector2[c(1,3)] # First and third only                    
                    
    
    # Create a vector with some random values
    some_values <- c(8, 6, 1, 12, 3)
    
    mean(some_values)
    
    median(some_values)
    
    sort(some_values)
    
    # Quartiles  (25% vs 75%)
    quantile(some_values, 0.25)
    quantile(some_values, 0.75)
    
    # Interquartile range
    IQR(some_values)
    
    # Standard deviation
    #In R, the standard deviation and the variance are computed as if the data represent a sample (n - 1)
    sd(some_values)
    
    # Variance
    var(some_values)
                    

    Pacotes (ou bibliotecas)

    Pacotes são coleções de funções prontas que ajudam a fazer tarefas específicas. Por exemplo:

  • ggplot2 — para gráficos elegantes
  • dplyr — para manipular dados
  • readr — para ler arquivos
  • Antes de usar um pacote, você precisa:
  • 
    # 1. Instalar (apenas uma vez):
    install.packages("ggplot2")                   
                    
    
    # 2. Carregar (toda vez que vocês for usar):
    library(ggplot2)                   
                    
    o que são funções?

    Funções são comandos prontos que fazem alguma coisa pra você, você já viu alguams acima. Elas seguem a estrutura:

    
    nome_da_função(argumento1, argumento2, ...)                   
                    
    
    #Por exemplo: 
    mean(c(1, 2, 3, 4))                   
                    
  • mean é o nome da função.
  • c(1, 2, 3, 4) é o argumento (um vetor de números).
  • As funções economizam tempo e organizam o que você precisa fazer. Há centenas delas no R — e você pode até criar as suas próprias ou usar de outras pessoas
  • O que são argumentos de uma função?

    Quando usamos uma função no R, precisamos passar para ela as informações necessárias para que ela saiba o que fazer. Essas informações são chamadas de argumentos — pense nelas como as etapas de um experimento.

    
    round(3.14159, digits = 2)                    
                    

    Plotando dados numéricos

    Existem várias formas de criar gráficos no R, mas nesta aula vamos focar no pacote ggplot2, uma ferramenta poderosa e elegante para visualização de dados. Ele se baseia na chamada gramática dos gráficos, que permite construir gráficos de forma estruturada e intuitiva — como se estivéssemos escrevendo frases com sentido.


    A gramática dos gráficos é um conjunto de regras que define como construir visualizações de forma lógica e padronizada. A grande vantagem é que, ao seguir essa gramática, você aprende uma estrutura única que serve para criar diversos tipos de gráficos — sem precisar decorar argumentos diferentes para cada um.


    Esse pacote se destaca porque te dá controle total sobre o gráfico: você decide cada parte — eixos, cores, tipos de visualização, títulos, legendas… tudo pode ser adicionado e ajustado com camadas. Isso torna seus gráficos mais personalizados e informativos.


    Os três componentes principais da gramática de gráficos são:


  • Dados: as observações em nosso conjunto de dados.
  • Estética: mapeamentos dos dados para propriedades visuais (como eixos e tamanhos de objetos geométricos).
  • Geometrias: objetos geométricos, como linhas, que representam o que vemos no gráfico.

  • Recursos úteis


    o PDF da documentação: https://cran.r-project.org/web/packages/ggplot2/ggplot2.pdf


    Aqui o link para o site: https://ggplot2.tidyverse.org/


    E aqui o link para o livro: https://ggplot2-book.org/

    
    # Load the tidyverse package
    library(tidyverse)                    
                    
    
    # Load the msleep dataset
    data(msleep)
    
    # Check the structure of the msleep dataset
    str(msleep)                    
                    
    
    nrow(msleep)
    ncol(msleep)
    head(msleep)                    
                    
    
    # Are there NA values? How many?
    any(is.na(msleep))
    sum(is.na(msleep))                    
                    
    
    # Leave out any observation with NA values
    msleep %>%
      drop_na()
    
    #Equal to do:
    #drop_na(msleep)                    
                    
    
    # Is there a relationship between sleep total and sleep rem?
    # How can we check that?
    # Plotting maybe?
    
    plot(msleep$sleep_total, msleep$sleep_rem)                    
                    
    
    # Correlation coefficient can be computed using the functions cor()
    cor.test(msleep$sleep_total, msleep$sleep_rem, method = "pearson", use = "complete.obs")                    
                    
    
    #Comparing means
    t.test(msleep$sleep_total, msleep$sleep_rem)                    
                    

    Aplicando o pacote ggplot2

    
    # Using tidyverse
    msleep %>%
      ggplot(aes(x = sleep_total, y = sleep_rem)) +
      geom_point()                    
                    
    
    #Directly calling ggplot
    ggplot(msleep, aes(x = sleep_total, y = sleep_rem)) +
      geom_point()                    
                    
    
    #Saving plots
    g <- ggplot(msleep, aes(x = sleep_total, y = sleep_rem)) +
      geom_point()
    ggsave(filename = "test.pdf", plot = g)                    
                    
    
    #Other alternative
    pdf("test2.pdf")
    g
    dev.off()                    
                    
    
    # Add a custom y-axis title
    msleep %>%
      ggplot(aes(sleep_total, sleep_rem)) + # Implicit or explicit arguments?
      geom_point() +
      xlab("Total sleep time (h)") +
      ylab("REM sleep time (h)")                    
                    
    
    msleep %>%
      ggplot(aes(sleep_total, sleep_rem)) +
      geom_point(color = "red") +  #visit: color-hex.com to select it
      xlab("Total sleep time (h)") +
      ylab("REM sleep time (h)")                    
                    
    
    # How can we colour the points by vore?
    str(msleep)                    
                    
    
    msleep %>%
      ggplot(aes(sleep_total, sleep_rem, color = vore)) +
      geom_point() +
      xlab("Total sleep time (h)") +
      ylab("REM sleep time (h)")                    
                    

    Boxplots

    
    # Base R
    boxplot(sleep_total ~ vore, data = msleep)                    
                    
    
    # ggplot2
    msleep %>%
      ggplot(aes(vore, sleep_total)) +
          geom_boxplot()                    
                    
    
    msleep %>%
      filter(!(is.na(msleep$vore))) %>%
      ggplot(aes(vore, sleep_total, fill = vore)) +
      geom_boxplot()                    
                    
    
    msleep %>%
      filter(!(is.na(msleep$vore))) %>%
      ggplot(aes(vore, sleep_total)) +
      geom_boxplot() +
      geom_jitter(aes(color=vore)) +
      labs(x= "Diet", y = "Total sleep time (h)", color ="Diet type")