Introdução à Linguagem R

R
Reprodutibilidade

Um tutorial básico sobre a linguagem R para Ciência de Dados.

Autor
Afiliação

Prof. Dr. Washington S. da Silva

Data de Publicação

7 julho 2024

1 Introdução

Objetivos
  • Este tutorial é destinado aos estudantes do bacharelado em Administração e aos mestrandos do Mestrado Profissional em Administração do IFMG - Campus Formiga.

  • Também é útil para administradores, economistas, contabilistas, auditores e outros profissionais que desejam utilizar ferramentas modernas para criar relatórios e outros produtos de forma reproduzível e auditável.

  • O objetivo principal é proporcionar uma compreensão sólida da linguagem R, desde seus fundamentos até aplicações em análise de dados, permitindo que alunos de graduação, mestrandos e demais profissionais e pesquisadores interessados desenvolvam habilidades para criar análises reproduzíveis e auditáveis. Embora o foco inicial seja a Ciência de Dados aplicada à Administração, o conteúdo foi elaborado para ser útil em diversas áreas do conhecimento.

Instalando a Linguagem R 4.4.1
  1. Acesse https://cloud.r-project.org/

  2. Selecione o sistema operacional, clicando em Download R for Windows por exemplo.

  3. Na página seguinte clique em base.

  4. Clique em Download R-4.4.3 for Windows.

  5. Feito o download basta ir clicando em próximo/next até a instalação ser concluída.

RStudio: Ambiente de Desenvolvimento para R
  • Para uma experiência de programação mais produtiva com R, recomenda-se fortemente o uso do RStudio, um IDE (Ambiente de Desenvolvimento Integrado) especialmente projetado para trabalhar com a linguagem R.

  • O RStudio oferece diversas funcionalidades que facilitam o aprendizado e uso da linguagem, como editor de código com destaque de sintaxe, projetos Rstudio, integração com Git e suporte nativo ao sistema Quarto.

  • Para instalar e configurar o RStudio, consulte nosso Tutorial sobre RStudio, onde são apresentadas instruções detalhadas para iniciantes.

  • Embora seja perfeitamente possível utilizar R com outros IDEs, a combinação (R + RStudio) facilita e potencializa significativamente a experiência de aprendizado e desenvolvimento.

O que é R?
  • R é um ambiente ou sistema para computação estatística e gráfico.

  • Este sistema é composto por duas partes: a própria linguagem R (que é o que a maioria das pessoas querem dizer quando falam sobre R) e um ambiente de tempo de execução (runtime environment).

  • R é uma linguagem interpretada, o que significa que os usuários acessam suas funções por meio de um interpretador de linha de comando.

  • Ao contrário de linguagens como Python e Java, R não é uma linguagem de programação de uso geral.

  • Em vez disso, R é considerada uma linguagem de domínio específica (DSL), o que significa que suas funções e uso foram projetados para uma área específica de uso ou domínio.

  • No caso de R, o domínio e a computação estatística. Por extensão, R é comumente usada para todos os tipos de tarefas de ciência de dados.

  • A linguagem R está equipada com um grande conjunto de funções internas para a manipulação, análise e visualização de dados.

  • Além das funções internas da linguagem, existem inúmeros pacotes (como os módulos de Python) que estendem as capacidades da linguagem.

Origens da Linguagem R

A linguagem S

  • A linguagem S foi desenvolvida em meados da década de 1970 por John Chambers no lendário Bell Labs. O objetivo era oferecer uma abordagem interativa para a computação estatística, que fosse fácil de usar e tornasse as tarefas de análise de dados mais fáceis e rápidas.

  • Em uma entrevista de 2013, Chambers observou que a equipe do Bell Labs queria que as pessoas começassem em um ambiente interativo, onde não pensassem em si como programadores. Então, à medida que suas necessidades se tornaram mais claras e sua sofisticação aumentasse, eles dseriam capazes de se orientar gradualmente para a programação com a linguagem S.

  • A filosofia geral de S era muito semelhante à de R: oferecer um ambiente de software que facilitasse a programação computacional e a análise estatística, que qualquer um possa aprender a usar.

  • Como R, S também pode ser usada para escrever programas mais longos centrados em tarefas estatísticas. Ao contrário de R, no entanto, S e sua iteração posterior, S-Plus, eram produtos licenciados, o que significa que tinham que ser comprados de uma empresa.

  • Portanto, é importante notar que a linguagem R é um dialeto da linguagem S.

Sintáxe e Semântica

  • Os linguistas usam os termos sintaxe e semântica para descrever elementos de linguagens naturais, e os cientistas da computação também adotaram esses termos para linguagens de programação.

  • Na programação de computadores, a sintaxe se refere às regras que ditam a ‘ortografia’ e a ‘gramática’ de uma linguagem, enquanto a semântica se refere a como os dados ou comandos de uma linguagem são apresentados.

  • A sintaxe de R era muito semelhante à de S em seus primeiros anos. Isso tornou mais fácil para as pessoas que usavam S-Plus mudar para R, o que desempenhou um papel fundamental na eventual popularidade de R na academia.

  • A semântica de R, no entanto, está mais próxima da linguagem Scheme, uma linguagem de programação funcional.

R é uma linguagem de baixo ou alto nível?

  • R é considerada uma linguagem de programação de alto nível. Essa classificação é baseada em seu nível de abstração da linguagem de máquina.

  • Ao contrário das linguagens de baixo nível que exigem conhecimento aprofundado da memória e dos processos do computador, linguagens de alto nível como R são projetadas para serem facilmente compreendidas e escritas por humanos, tornando-as mais acessíveis para estatísticos, analistas de dados e pesquisadores.

Um Breve Histórico da Linguagem R
  • 1991: Os professores e estatísticos Ross Ihaka e Robert Gentleman começam a trabalhar em um novo dialeto da linguagem S como um projeto de pesquisa para o Departamento de Estatística da Universidade de Auckland na Nova Zelândia.

  • 1993: O primeiro anúncio de R chega ao público através do arquivo de dados StatLib e da lista de discussão s-news.

  • 1995: O estatístico Martin Mächler convence os criadodes de R a lançar a linguagem sob uma licença pública geral GNU, tornando R gratuita e de código aberto. Ihaka e Gentleman lançam seu artigo seminal apresentando R ao mundo.

  • 1997: O R Core Team foi formado, este grupo é o único com acesso ao código-fonte R. No mesmo ano, foi criada a Comprehensive R Archive Network (CRAN). Este repositório de pacotes R ajuda os profissionais em inúmeras tarefas.

  • 2000: R versão 1.0.0 foi lançada ao público.

  • Março de 2024: Estamos atualmente na versão R 4.3.3

Por que usar a linguagem R?
  • Gratuito e de código aberto: Diferentemente de softwares estatísticos proprietários, R é completamente gratuito e seu código-fonte é aberto, permitindo total transparência e personalização.

  • Especialmente projetado para análise estatística e ciência de dados: Enquanto outras linguagens podem ser adaptadas para estas tarefas, R foi concebida especificamente para computação estatística e visualização de dados.

  • Ampla comunidade acadêmica e profissional: R possui uma comunidade ativa de usuários que contribuem constantemente com novos pacotes, métodos e soluções para problemas complexos.

  • Integração com o sistema Quarto: Perfeita compatibilidade com o sistema de publicação Quarto, permitindo a criação de documentos, apresentações e websites dinâmicos e reproduzíveis.

  • Ecossistema Tidyverse: O conjunto de pacotes Tidyverse fornece uma gramática consistente para manipulação, visualização e modelagem de dados, especialmente útil para iniciantes.

  • Excelência em visualização de dados: Pacotes como ggplot2 permitem criar visualizações estatísticas sofisticadas e personalizáveis.

  • Relevância no mercado: Profissionais com conhecimento em R são valorizados em setores como finanças, consultorias, pesquisa de mercado e análise de negócios.

  • Reprodutibilidade científica: R facilita a implementação de práticas de ciência reproduzível, essencial para pesquisas acadêmicas e relatórios corporativos auditáveis.

  • Versatilidade em tipos de análise: Desde estatísticas descritivas simples até modelos complexos de machine learning e econometria aplicada, R oferece ferramentas para diversos níveis de análise.

  • Documentação extensa: Ampla disponibilidade de documentação, tutoriais, livros e recursos online, facilitando o aprendizado contínuo.

Vídeo sobre R
  • Para finalizar esta introdução, assista o vídeo a seguir sobre a linguagem R disponibilizado pelo R Consortium:
Próximos Passos

Nas próximas seções do tutorial vamos explorar os conceitos básicos da linguagem R, que servirão como alicerce para os tópicos posteriores. Compreender esses fundamentos é essencial antes de avançarmos para análises mais complexas.

2 Objetos e Variáveis em R

Em R, os termos “variável” e “objeto” são frequentemente usados de forma intercambiável, o que pode causar confusão inicial, especialmente para quem já possui experiência com outras linguagens de programação. Esta seção esclarece essa terminologia para facilitar seu aprendizado.

A Filosofia “Tudo é um Objeto” em R

R segue uma filosofia fundamental: tudo que existe em R é um objeto. Isso significa que todos os elementos que você manipula — desde números simples até funções complexas — são tratados como objetos.

Esta abordagem difere de muitas outras linguagens de programação que fazem distinção clara entre “variáveis primitivas” (como números) e “objetos” (estruturas mais complexas).

Quando criamos algo em R usando um operador de atribuição (<-), estamos essencialmente:

  1. Criando um objeto na memória do computador
  2. Atribuindo um nome a esse objeto para referenciá-lo posteriormente

Por exemplo, em idade <- 25, criamos um objeto do tipo numérico com valor 25 e o nomeamos como “idade”. Este nome funciona como uma etiqueta que nos permite acessar e manipular o objeto.

Por que usarei “variável” e “objeto” de forma intercambiável?

Por questões de clareza e para facilitar seu aprendizado:

  • Utilizarei o termo variável principalmente quando falarmos de valores simples que “variam”, como números, textos ou valores lógicos. Este termo é mais intuitivo para iniciantes e comum em estatística e análise de dados.

  • Utilizarei o termo objeto quando precisarmos enfatizar a natureza mais complexa de algumas estruturas em R, como data frames, listas, funções ou quando discutirmos conceitos mais avançados.

  • Em muitos contextos, usarei ambos os termos de forma intercambiável, refletindo a prática comum na comunidade R.

Esta flexibilidade terminológica espelha a documentação oficial da linguagem R e a literatura sobre a linguagem, preparando você para diferentes materiais que poderá encontrar em sua jornada de aprendizado.

Uma Analogia Útil

Imagine uma biblioteca onde cada livro é um “objeto” de dados:

  • O conteúdo do livro representa os dados ou valores armazenados.

  • O título na lateral representa o nome da variável

  • As prateleiras e estantes representam a memória do computador

  • O catálogo da biblioteca equivale ao ambiente R, que mantém registro de onde cada objeto está armazenado

Quando você cria uma variável como receita <- 5000, é como se estivesse colocando um novo livro (com o conteúdo “5000”) na biblioteca e rotulando sua lateral como “receita” para poder encontrá-lo depois.

Este entendimento sobre variáveis e objetos em R estabelece uma base conceitual importante antes de mergulharmos nos tipos específicos de dados e em como manipulá-los para análises eficazes.

3 Variáveis e Atribuição de Valores

Em R, a atribuição de valores a variáveis é fundamental para armazenar e manipular dados. Por exemplo, podemos criar variáveis para armazenar informações financeiras, como receitas, custos e lucros, que são essenciais para análises em Administração.

# Exemplo: Atribuição de valores a variáveis
receita_mensal <- 850000  # Receita mensal da empresa
custos_mensais <- 500000  # Custos mensais

# Cálculo do lucro
lucro_mensal <- receita_mensal - custos_mensais  
lucro_mensal
[1] 350000

Todas as instruções R com as quais criamos variáveis ou objetos têm o mesmo formato:

nome_do_objeto <- valor

Lemos esse código como: “valor é atribuído a nome_objeto

Em R, podemos atribuir informações às variáveis (ou objetos) utilizando os seguintes operadores de atribuição:

# Diferentes formas de atribuição em R
# Mesmo resultado, estilos diferentes

# Operador recomendado (<-) 
receita_mensal <- 850000
receita_mensal
[1] 850000
# Alternativa (=), funciona, mas menos 
# recomendado
lucro_operacional = 320000
lucro_operacional
[1] 320000

Em R, como em todas as linguagens, fazemos muitas atribuições de valores a variáveis, e não é agradável digitar o operador manualmente. Assim, o RStudio oferece um atalho de teclado simples para inserir o operador <-:

  • Atalho do RStudio: Alt + - (Windows/Linux) ou Option + - (Mac)

  • Observe que o RStudio automaticamente envolve <- com espaços, o que é uma boa prática de formatação de código.

  • Códigos sem espaços são difíceis de ler compare:

lucro<-receita-custos versus

lucro <- receita - custos

Boas Práticas para Escrever Códigos R

Nomes de variáveis devem começar com uma letra e podem conter letras, números, _ e .

É importante criar nomes de objetos simples e descritivos que representem claramente seu conteúdo. Em Administração, é comum trabalhar com dados financeiros, de desempenho ou de mercado, então use nomes que facilitem a compreensão do código.

Exemplos de boas práticas:

# Margem bruta da empresa
margem_bruta <- 0.35  

# Fluxo de caixa operacional
fluxo_caixa_operacional <- receita - custos  

Estilos de nomenclatura:

  • snake_case: margem_bruta, fluxo_caixa_operacional
  • CamelCase: MargemBruta, FluxoCaixaOperacional

Escolha um estilo e mantenha a consistência em todo o código.

Práticas a evitar

Evite os seguintes erros comuns:

  1. Nomes genéricos:
  • Ruim: dados, resultado, x
  • Melhor: receita_anual, lucro_liquido
  1. Nomes muito longos:
  • Ruim: calculo_da_margem_de_contribuicao_ajustada
  • Melhor: margem_contribuicao
  1. Espaços nos nomes:
  • Ruim: margem bruta <- 0.35 (causa erro)
  • Melhor: margem_bruta <- 0.35
  1. Nomes começando com números:
  • Ruim: 1trimestre <- "Janeiro-Março" (inválido)
  • Melhor: trimestre1 <- "Janeiro-Março"
  1. Sobrescrever funções existentes:
  • Ruim: mean <- 10 (sobrescreve a função mean())
  • Melhor: media <- 10
Como Imprimir Informações sobre Objetos em R

Em R, existem algumas formas simples e eficazes de exibir informações sobre objetos ou variáveis. Esses métodos são ideais para visualizar valores, depurar código ou criar saídas personalizadas. Abaixo estão as principais formas:

1. Usando print()

A função print() é a maneira mais básica de exibir o conteúdo de um objeto:

# Exemplo: Usando print()
receita <- 850000.50
print(receita)  # Exibe o valor da variável
[1] 850000.5

2. Imprimindo diretamente no console

Em R, você pode exibir o conteúdo de um objeto simplesmente digitando seu nome no console. Isso chama automaticamente a função print() implicitamente:

# digitar o nome do objeto exibe seu valor
receita  
[1] 850000.5

3. Usando a função cat()

A função cat() permite exibir informações de forma mais personalizada, combinando texto e valores. É útil para criar mensagens ou relatórios simples.

# a funçaão cat() combina texto e valor
cat("A receita mensal é:", receita)  
A receita mensal é: 850000.5

Resumo:

  • Use print() para exibir valores de forma explícita.

  • Digite o nome do objeto diretamente no console para exibir seu valor de forma rápida.

  • Use cat() para criar saídas personalizadas, combinando texto e valores.

4 Tipos Atômicos de Dados

Em R, os dados são armazenados em diferentes tipos atômicos (básicos), cada um com características específicas. A Tabela 1 mostra os principais tipos.

Tabela 1: Principais Tipos
Tipo Classe Descrição
double numeric um vetor contendo valores reais (números com casas decimais)
integer numeric um vetor contendo valores inteiros (números sem casas decimais)
character character um vetor contendo valores de texto (caracteres)
logical logical um vetor contendo valores lógicos (TRUE/FALSE)

A Tabela 2 exibe alguns tipos especiais que podem aparecer em análises de dados.

Tabela 2: Tipos Especiais
Tipo Descrição
NA Not Available: representa dados faltantes
NaN Not a Number: (ex: 0 / 0)
Inf + \infty ou - \infty: (ex: 1 / 0)
A Importância de Conhecer Tipos e Classes de Dados

Na prática da Ciência de Dados, estima-se que analistas e cientistas dedicam entre 60% a 80% do tempo de um projeto à importação, limpeza e preparação dos dados antes de iniciar análises mais sofisticadas. Compreender profundamente os tipos e classes de dados em R é fundamental por várias razões:

  • Evita erros sutis de processamento: Operações matemáticas em dados textuais ou cálculos com valores ausentes podem produzir resultados inesperados.

  • Otimiza o desempenho: Estruturas de dados apropriadas melhoram a eficiência computacional, especialmente em conjuntos grandes.

  • Facilita transformações: O conhecimento dos tipos permite conversões adequadas (como texto para número) sem perda de informação.

  • Melhora a interpretabilidade: Identificar corretamente dados faltantes (NA), indefinidos (NaN), ou infinitos (Inf) é crucial para conclusões válidas.

  • Aumenta a compatibilidade: Diferentes funções e pacotes em R exigem tipos específicos de dados como entrada.

O domínio dos tipos e classes de dados não é apenas uma questão técnica, mas um requisito fundamental para análises confiáveis em contextos administrativos e financeiros. Este conhecimento permite ao analista de dados concentrar-se mais nos insights e menos na correção de problemas estruturais nos dados.

4.1 Tipos double e integer

Em R, existem dois tipos principais de dados numéricos:

  • double: Armazena números com casas decimais (ponto flutuante), ideal para valores monetários, índices financeiros, taxas percentuais e outras medidas que exigem precisão decimal.

  • integer: Armazena números inteiros sem casas decimais, útil para contagens, quantidades discretas e índices em séries temporais.

Na prática de Administração e Finanças, o tipo double é frequentemente utilizado para representar valores monetários, taxas de juros ou indicadores financeiros, enquanto integer é mais comum para representar quantidades como número de funcionários, produtos vendidos ou períodos de análise.

O sufixo L após um número (como em 50L) indica explicitamente que se trata de um valor inteiro. Na maioria das operações, R utiliza automaticamente o tipo mais apropriado, o que simplifica a programação para análises financeiras e administrativas.

# double (números com casas decimais)
receita <- 850000.50  

# integer (números inteiros)
total_funcionarios <- 50L   

# verifica os tipos
typeof(receita)
[1] "double"
typeof(total_funcionarios)
[1] "integer"
classe numeric

Apesar dos tipos double e integer representarem números decimais e inteiros de forma diferente, ambos pertencem à classe numeric, assim, na maioria das situações, você não precisa se preocupar com a possível diferença.

class(receita)
[1] "numeric"
class(total_funcionarios)
[1] "integer"

Diferença entre typeof e class

Em R, as funções typeof e class fornecem informações diferentes sobre um objeto:

  • typeof: Retorna o tipo interno do objeto, ou seja, como R armazena o objeto na memória. Por exemplo:
typeof(receita)  # Retorna "double"
typeof(total_funcionarios)  # Retorna "integer"
  • class: Retorna a classe do objeto, que define como R trata o objeto em operações e funções. Por exemplo:
class(receita)  # Retorna "numeric"
class(total_funcionarios)  # Retorna "numeric"

Em resumo:

  • Use typeof para entender como R armazena o objeto internamente.
  • Use class para entender como R trata o objeto em operações e funções.

4.2 Tipo character

O tipo character é essencial para armazenar e manipular informações textuais. Este tipo de dado armazena sequências de caracteres (texto) e é indicado por aspas simples (') ou duplas (").

Em contextos de Administração, o tipo character é utilizado para armazenar:

  • Nomes de empresas, setores ou produtos
  • Categorias em classificações de mercado
  • Períodos de tempo expressos como texto (Ex: “1° Trimestre 2024”)
  • Códigos de identificação alfanuméricos
  • Observações qualitativas

A manipulação de dados textuais é particularmente importante em análises de mercado, pesquisas de satisfação, classificação de produtos e organização de relatórios gerenciais, onde a categorização textual precede análises quantitativas.

# character (texto)
instituicao <- "IFMG - Campus Formiga" 

# verifica o tipo 
typeof(instituicao)
[1] "character"

4.3 Tipo logical

O tipo logical representa valores booleanos (TRUE ou FALSE) e é fundamental para operações condicionais e filtragem de dados.

Em contextos práticos de gestão e finanças, o tipo logical é utilizado para:

  • Verificar condições financeiras (Ex: lucro positivo, meta atingida)
  • Filtrar dados que atendem a critérios específicos
  • Automatizar decisões baseadas em regras de negócio
  • Sinalizar eventos importantes (Ex: inadimplência, quebra de estoque)
  • Implementar validações em modelos de previsão

Os valores TRUE e FALSE devem ser escritos em maiúsculas em R, e podem ser abreviados como T e F, respectivamente, embora a forma completa seja recomendada para maior clareza do código.

# logical (lógico, TRUE/FALSE)
lucro_positivo <- TRUE  
lucro_negativo <- FALSE

# verifica o tipo 
typeof(lucro_positivo)
[1] "logical"
typeof(lucro_negativo)
[1] "logical"

4.4 Tipo Especial NA

O tipo especial NA (Not Available) é comum em análises de dados reais, onde frequentemente nos deparamos com informações ausentes. Em contextos de Administração e Finanças, dados faltantes podem representar:

  • Vendas não realizadas em determinados períodos
  • Informações contábeis pendentes
  • Valores não reportados em demonstrações financeiras
  • Respostas omitidas em pesquisas de mercado
  • Métricas não aplicáveis a certos departamentos ou produtos

Identificar e tratar corretamente os valores NA é essencial para evitar conclusões tendenciosas. R oferece funções específicas como is.na() para detectar valores ausentes e métodos estatísticos para lidar com eles de forma apropriada.

# Exemplo: Detectando valores ausentes em dados de vendas 
vendas_trimestrais <- c(150000, 165000, NA, 180000)
is.na(vendas_trimestrais) 
[1] FALSE FALSE  TRUE FALSE
# calculando a média excluindo valores ausentes
mean(vendas_trimestrais, na.rm = TRUE)
[1] 165000

O tratamento adequado de dados falantes é uma habilidade fundamental em Ciência de Dados.

4.5 Tipo Especial NaN

O valor NaN (Not a Number) ocorre quando uma operação matemática produz um resultado indefinido. Em contextos de gestão e finanças, este tipo especial pode surgir em:

  • Cálculos de indicadores financeiros com divisores zero
  • Operações matemáticas inválidas em modelos preditivos
  • Transformações logarítmicas de valores negativos ou zero
  • Raízes quadradas de números negativos em análises estatísticas

Enquanto NA representa dados ausentes, NaN indica especificamente um resultado numérico indefinido. Diferenciá-los é importante para diagnóstico de problemas em cálculos complexos, como em modelos de precificação de ativos ou simulações financeiras.

A função is.nan() permite identificar estes valores em conjuntos de dados:

# Exemplo: Identificando resultados indefinidos em cálculos financeiros
resultados <- c(25, 0/0, 10)
is.nan(resultados)  
[1] FALSE  TRUE FALSE

4.6 Tipo Especial inf

O valor especial Inf (e -Inf para infinito negativo) ocorre principalmente em divisões por zero e representa valores que excedem os limites computacionais. Em análises administrativas e financeiras, este tipo pode aparecer em:

  • Cálculos de taxas de crescimento a partir de valores base zero
  • Razões financeiras com denominadores muito próximos a zero
  • Projeções exponenciais sem restrições
  • Análises de retorno sobre investimento com investimentos mínimos

Diferentemente de NA e NaN, valores Inf podem ser utilizados em operações aritméticas seguindo regras matemáticas de infinito:

# Exemplo: Comportamento de infinito em operações
infinito_positivo <- 1/0
infinito_positivo + 1000  # Continua sendo Inf
[1] Inf
infinito_positivo / 2     # Continua sendo Inf
[1] Inf

Identificar valores infinitos é importante, por exemplo, em modelos financeiros, pois podem indicar problemas estruturais nas fórmulas utilizadas ou divisões por zero que comprometem a validade das análises.

Sobre Conversão entre Tipos e Classes de Dados
  • Você pode estar se perguntando como converter um tipo ou classe de dados em outro(a) (por exemplo, transformar um texto em número ou vice-versa).

  • Embora R base ofereça funções como as.numeric(), as.character() e as.logical() para essas conversões, abordaremos este tópico mais adiante no tutorial, quando estudarmos a manipulação de dados com o pacote dplyr.

  • Especificamente, aprenderemos como usar as funções mutate() e transmute() para realizar conversões de tipos de maneira eficiente e legível em conjuntos de dados estruturados. Esta abordagem se alinha com as práticas modernas de ciência de dados e permite transformar múltiplas variáveis simultaneamente dentro de um fluxo de trabalho analítico coerente.

  • Por enquanto, foque em compreender as características e comportamentos dos diferentes tipos de dados apresentados nesta seção, pois este conhecimento fundamentará toda sua jornada na análise de dados com R.

4.7 Exercícios