# Exemplo: Atribuição de valores a variáveis
<- 850000 # Receita mensal da empresa
receita_mensal <- 500000 # Custos mensais
custos_mensais
# Cálculo do lucro
<- receita_mensal - custos_mensais
lucro_mensal lucro_mensal
[1] 350000
Um tutorial básico sobre a linguagem R para Ciência de Dados.
Prof. Dr. Washington S. da Silva
7 julho 2024
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.
Acesse https://cloud.r-project.org/
Selecione o sistema operacional, clicando em Download R for Windows por exemplo.
Na página seguinte clique em base.
Clique em Download R-4.4.3 for Windows.
Feito o download basta ir clicando em próximo/next até a instalação ser concluída.
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.
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.
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.
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
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.
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.
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.
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:
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 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.
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.
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:
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
[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
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:
Estilos de nomenclatura:
margem_bruta
, fluxo_caixa_operacional
MargemBruta
, FluxoCaixaOperacional
Escolha um estilo e mantenha a consistência em todo o código.
Evite os seguintes erros comuns:
dados
, resultado
, x
receita_anual
, lucro_liquido
calculo_da_margem_de_contribuicao_ajustada
margem_contribuicao
margem bruta <- 0.35
(causa erro)margem_bruta <- 0.35
1trimestre <- "Janeiro-Março"
(inválido)trimestre1 <- "Janeiro-Março"
mean <- 10
(sobrescreve a função mean()
)media <- 10
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:
[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:
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 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.
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.
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.
Tipo | Descrição |
---|---|
NA |
Not Available : representa dados faltantes |
NaN |
Not a Number : (ex: 0 / 0 ) |
Inf |
+ \infty ou - \infty: (ex: 1 / 0 ) |
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.
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"
[1] "integer"
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.
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:class
: Retorna a classe do objeto, que define como R trata o objeto em operações e funções. Por exemplo:Em resumo:
typeof
para entender como R armazena o objeto internamente.class
para entender como R trata o objeto em operações e funções.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:
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.
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:
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.
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:
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
[1] 165000
O tratamento adequado de dados falantes é uma habilidade fundamental em Ciência de Dados.
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:
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:
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:
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
[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.
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.