Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
SlideShare uma empresa Scribd logo
Cartilha de R para Estatística e
Data Science
Edkallenn Lima
Mestre em Ciência da Computação, Agente de
Polícia Federal e professor
O que é R e por que aprendê-lo?
R é uma linguagem de programação estatística que vem passando por diversas
evoluções e se tornando cada vez mais uma linguagem de amplos objetivos
R é também um conjunto de pacotes e ferramentas para computação estatística,
munido de funções que facilitam sua utilização, desde a criação de simples rotinas
até análises de dados complexas, com visualizações bem acabadas
Motivos para aprender R
É gratuito, parte do projeto Free Software Foundation's GNU;
Curva de aprendizado bastante amigável, sendo muito fácil de se aprender;
Enorme quantidade de tutoriais e ajuda disponíveis gratuitamente na internet;
É excelente para criar rotinas e sistematizar tarefas repetitivas;
Amplamente utilizado pela comunidade acadêmica e pelo mercado;
Quantidade enorme de pacotes, para diversos tipos de necessidades;
Ótima ferramenta para criar relatórios e gráficos.
R também é uma linguagem de programação
Qual é a vantagem?
É um texto
É reprodutível
Dá para compartilhar!
O que podemos fazer com R?
Análise de dados - Estatística, modelagem, etc.
Visualização de dados
Apresentações
Relatórios dinâmicos
Escrever livros - Pacote Bookdown
Mineração de dados
E muito mais ...
RStudio
RStudio é o IDE da Linguagem R, ou seja, o ambiente
que utilizamos para editar e executar os códigos em
R.
Facilita a utilização do R.
É possível usar o R em Windows, Linux e Mac
O R é, prioritariamente, um ambiente de
programação de linha de comando
Felizmente existe o RStudio, ferramenta auxiliar que
usaremos durante a cartilha
Vantagens do RStudio
Sugestão de funções ou objetos ao escrever palavras similares nas linhas de código;
Autocompletar de funções;
Abas específicas para determinada ação, tal como gráficos, bases de dados etc;
Histórico de códigos utilizados;
Executor de linhas de código sequenciais;
Identificação de erros antes de executá-los;
Separação entre linhas de código e resultados, facilitando a escrita e execução de
comandos.
Instalando RStudio
Primeiro deve-se instalar o R nesse link
Em seguida, basta acessar: https://rstudio.com/products/rstudio/download/.
Na tela inicial você já vai ver DOWNLOAD;
Clique no link e o download vai dar início.
Depois de baixado, é só clicar no instalador e ir clicando em próximo e/ou avançar,
como a maioria dos programas
Layout e funcionalidades
A primeira janela no topo a esquerda é onde
escrevemos os códigos, ou seja, é o editor de texto
dessa interface.
Após escrever o código, existem duas formas de
executar o script: (1) através do ícone Run ; ou (2)
através do atalho ctrl + enter .
Essas duas alternativas vão executar o script de
forma sequencial.
Para salvar o script em um arquivo basta clicar no
ícone do disquete, aparecerá o diretório que você
deseja salvar, bem como o campo para nomear o
arquivo
Visão geral da Área de trabalho do RStudio
Layout
A segunda janela abaixo e a esquerda
é a janela referente ao Console , ou
seja, é o terminal onde os comandos
são executados. (O R vive aqui!)
Todos os comandos executados na
janela de editor de texto aparecem
aqui.
No Console também podemos
executar comandos isolados, de forma
direta do mesmo jeito que faríamos no
terminal convencional do Linux.
e funcionalidades
Acima a direita você tem duas abas:
Environment , History e
Connections .
Nessa janela, na aba Environment você
vai ter seus objetos, seus dados e
variáveis criadas.
Na aba History é onde ficará
armazenado seu histórico do script.
Esse histórico é útil caso o RStudio se
feche ou você escolha salvar seu
workplace, ao abri-lo você não perderá
o histórico.
Layout e Funcionalidades
Por fim, abaixo a direita uma outra janela, nela há cinco abas: Files , Plots ,
Packages , Help e Viewer .
Na aba File terá o endereço do seu working directory, ou seja, do diretório no qual
você está trabalhando.
Para saber qual o diretório que você está trabalhando, basta digitar no Console o
código getwd().
Na aba Plots é onde o gráfico que eventualmente você vai gerar vai aparecer.
Já na aba Packages vai aparecer uma lista de pacotes que você pode selecionar e
instalar na hora.
Na aba Help é onde vai aparecer a documentação com exemplos e explicações
sobre alguma função que você possa ter dúvidas de como utilizar.
Atalhos úteis dentro do RStudio
CTRL + ENTER : roda a linha selecionada no script
CTRL + ALT + I :cria um chunk no R Markdown
ALT + SHIFT + k : janela com todos os atalhos disponíveis
ALT+-: cria no script um sinal de atribuição (<-). Você o usará o tempo todo.
CTRL+SHIFT+M: (%>% ou |>) operador pipe. Guarde esse atalho, será bastante
utilizado.
CTRL+1: altera cursor para o script.
CTRL+2: altera cursor para o console.
Chunks são os blocos de código que são executados quando o documento é
compilado

No MacOS, substitua CTRL por command e ALT por option.
Arquivos
R gera alguns tipos de arquivos que podem ser salvos. As principais deles são:
.R - Usado para salvar códigos criados e rotinas de análises (scripts).
.RData - Usado para salvar os objetos da área de trabalho (workspace).
.Rhistory - Usado para salvar o histórico dos comandos executados
(normalmente salvo automaticamente).
.Rproj - Formato exclusivo do RStudio, serve para salvar todas as
informações utilizadas anteriormente pelo RStudio de maneira simplificada.
Área de Trabalho e Diretório de Trabalho
R sempre fica associado a uma pasta específica do seu computador, essa pasta será
o diretório de trabalho (working directory).
Os arquivos que estão neste diretório são fáceis de carregar e qualquer arquivo
exportado será salvo no diretório caso não especificado o contrário.
O diretório de trabalho pode ser alterado, sem qualquer mudanças nos objetos da
área de trabalho.
getwd() # Mostrar o diretório de trabalho atual

dir() # Listar os arquivos do diretório

setwd() # Mudar o diretório de trabalho
Área de Trabalho e Diretório de Trabalho 2
É possível salvar a área de trabalho inteira e carregar em outro momento.
ls() # Listar os objetos da área de trabalho

save.image("meu_workspace.RData") # Salvar área de trabalho

load("meu_workspace.RData") # Carregar área de trabalho
Projetos
Uma funcionalidade muito importante do RStudio é a possibilidade de criar
projetos.
Um projeto é uma pasta no seu computador. Nessa pasta, estarão todos os
arquivos que você irá usar ou criar nas suas análises.
A principal razão de utilizarmos projetos é organização.
RStudio com um projeto aberto
Navegando entre projetos
Pacotes
Pacotes são coleções de funções, dados e documentação que estendem as
capacidades do R básico. Eles precisam ser instalados e carregados.
Pacotes
Como existem muitos pacotes para R e só alguns deles são pré-instalados, os
demais precisam ser instalados no computador.
O procedimento de instalação precisa ser realizado apenas uma vez (além de
atualização de tempos em tempos).
Após instalados os pacotes estarão disponíveis para uso, mas é preciso carregar o
pacote para utilização.
install.packages("bbmle") # Instalar o pacote chamado bbmle

library(bbmle) # Carrega o pacote, ou então...

require(bbmle) # ... também carrega o pacote
Dicas sobre pacotes
1. Você só precisa instalar o pacote uma vez, mas precisa carregá-lo sempre que
começar uma nova sessão;
2. Para instalar o pacote use as aspas;
3. Para carregar o pacote, não utilize as aspas.
Detalhes Importantes: 1
Diferenças entre caracteres maiúsculos e minúsculos - Existem diferenças entre
caracteres maiúsculos e caracteres minúsculos (case sensitive), então o caractere A
é diferente do caractere a .
Separador decimal - O separador decimal utilizado pelo R é o símbolo do ponto
( . ), o símbolo de vírgula ( , ) é reservado para separar diferentes objetos dentro
de uma função.
Para alterar essa opção é preciso configurar nas preferências gerais do sistema
operacional.
Detalhes Importantes: 2
Parênteses, colchetes e chaves - Os símbolos de parênteses ( () ) servem para
agrupar objetos dentro de uma função e os símbolos de chaves ( {} ) servem para
agrupar funções dentro de outras funções.
Os colchetes ( [] ) são utilizados para indexar objetos dentro de outros objetos.
Como são símbolos utilizados para agrupar, eles devem ser abertos e fechados, ou
seja, deve haver um símbolo para finalizar o agrupamento.
Caracteres especiais- Caracteres especiais como por acentos e espaços devem ser
evitados.
Geralmente não são reconhecidos ou causam muitos problemas, pode-se usar os
símbolos de ponto ( . ) ou underline ( _ ) nos lugares dos espaços.
Esses símbolos especiais podem se usados no formato de texto nos resultados
finais, com por exemplo para exportar resultados gráficos.
Noções básicas
Ao digitar um comando (na aba Console ) o programa recebe os dados, executa
as funções e retorna os resultados.
Os dados de entrada podem ser fornecidos na hora de executar a função ou podem
estar guardados em algum lugar da memória (geralmente na área de trabalho).
Da mesma forma, os resultados das funções podem ser exibidos na tela ou salvos
em algum objeto (geralmente na área de trabalho).
Usando como uma calculadora
Primeiramente o R pode ser usado como uma calculadora.
2+2 # Soma

[1] 4

8-3 # Subtração

[1] 5

3*8 # Multiplicação

[1] 24

8/2 # Divisão

[1] 4

2^8 # Potências

[1] 256

(2+4)/7 # Prioridade de solução

[1] 0.8571429

Note que acompanhado do resultado é mostrado o [1]. Esse valor indica a posição
(índice) do primeiro valor do resultado.
Variáveis
Em R, uma variável pode ser definida com o uso do operador <-
Ele significa gets e pode ser traduzido como "atribuição" ou "recebe"
Por exemplo:
> x <- 1

O código acima atribui à variável x o valor 1
Para verificar o valor, basta:
> x

Após teclar ENTER , o valor será mostrado na tela:
[1] 1 

Atalho: ALT + - : cria o <- sinal de atribuição
Exemplos
nome <- "Daenerys Targaryen"

nome

## [1] "Daenerys Targaryen"

horas_trabalhadas <- 160

horas_trabalhadas

## [1] 160

salario <- 3984.23

salario

## [1] 3984.23

ativo <- TRUE

ativo

## [1] TRUE
Variáveis
Esta notação para atribuição de variáveis é comumente usada em pseudocódigos
e comum em livros que apresentam discussões sobre algoritmos
Não é necessário definir o tipo da variável (tipagem dinâmica)
Mais exemplos de atribuições:
# atribuindo uma cadeia de caracteres (string) à variável x

> x <- "Olá Mundo"

> x

[1] "Olá mundo"

# Atribuindo um valor numérico do tipo real à variável x

> x <- 3.45

> x

[1] 3.45

É possível usar = ou <- e isso pode ser feito com qualquer tipo de objeto
Nomes de objetos (variáveis)
Os nomes devem começar com uma letra. Podem conter letras, números, _ e .
Não usar acentuação e espaços nos nomes de objetos.
Recomendação do autor do livro  R  For Data Science: usar_snake_case, ou seja,
palavras escritas em minúsculo separadas pelo underscore ( _ ).
O  R  é case sensitive, isto é, faz a diferenciação entre as letras minúsculas e
maiúsculas. Portanto, um objeto chamado  teste  é diferente de uma outro objeto
chamada  Teste .
Funções matemáticas
Assim como todas as linguagens de programação, o R possui uma série de
funções nativas. Entre elas, estão as matemáticas. Uso de algumas a seguir:
> # raiz quadrada

> sqrt(2)

[1] 1.414214

> #exponencial

> exp(1)

[1] 2.718282

> #cosseno

> cos(90)

[1] -0.4480736

> #logaritmo: o primeiro argumento é o valor que será aplicada a função logaritmo. O segundo é a base

> log(1024,2)

[1] 10

Nos exemplos acima não foram realizadas atribuições. As funções são executadas
e os resultados não são acessíveis por meio de variáveis
Outra forma de executar funções matemáticas
> log(x = 8) # Logaritmo natural de 8

[1] 2.079442

> rep(x = 1, times = 4) # Repetir o valor 1 quatro vezes

[1] 1 1 1 1

> sum(1, 8, 79) # Soma de vários valores

[1] 88

> log(x = 8, base = 2) # Logaritmo de 8 na base 2, especificando cada argumento

[1] 3

> log(8, 2) # Logaritmo de 8 na base 2, seguindo a ordem dos argumentos na função

[1] 3

> log2(1024) #Logaritmo de base 2

[1] 10
Ajuda
É possível encontrar o arquivo de ajuda das funções com:
> help(log) # Abre a ajuda da função log, ou então...

? ?log # ... também abre a ajuda

Se a dúvida permanecer, procure no Stack OverFlow ou Google.
E se ainda tiver dúvidas, pergunte para a comunidade (há grupos no Telegram e
outras redes sociais).
Os principais itens do arquivo de ajuda da função são
Description - Apresenta um resumo sobre o que a função faz
Usage - Mostra todos os argumentos, ordem e as opções

reestabelecidas de cada um.
Arguments - Explica cada argumento.
Details - Detalhes sobre o uso da função, métodos e aplicação.
Value - Explica cada um dos os resultados.
References – Referências dos métodos.
See also - Funções relacionadas.
Examples - Mostra alguns exemplos que podem ser executados.
Ajuda: args e search
A função args mostra apenas os argumentos de uma função, o que pode ser útil
em alguns casos.
> args(log) # Mostra os argumentos da função log

function (x, base = exp(1)) 

NULL

Ainda é possível pesquisar por assunto, usando a função help.search ou ?? .
Qualquer documentação com o termo da pesquisa é retornada, incluindo funções
de pacotes que não estejam carregados, mas que estejam instalados no
computador.
help.search(mean) # Procura pelo termo mean, ou então...

??mean # ... faz a mesma busca
Cheatsheets
O RStudio tem à disposição algumas folhas de cola, as cheatsheets.
Elas trazem um resumão de como utilizar diversos pacotes e até o próprio RStudio.
Para acessá-las, basta clicar no menu  Help  e então em  Cheatsheets , ou no site da
RStudio.
O que é um objeto?
Ao se desenvolver um projeto, você irá trabalhar com diversos tipos de arquivos,
além de informações que serão repetidas ao longo do script.
Para reutilizar essas informações ao longo do script utilizamos o que chamamos
de objeto
Um objeto retém e representa um valor, função ou base de dados
Mostrar e remover objetos (variáveis)
Durante a execução do R vários objetos são salvos na área de trabalho
(workspace).
Para visualizar todos os objetos da área de trabalho é possível utilizar a função ls e
para remover a função rm.
Os objetos removidos não podem mais ser recuperados.
> ls() # Listar dos objetos termporários da área de trabalho

[1] "x" "X" "y" "z"

> rm(X) # Remover objeto X

> rm(y) # Remover objeto y

> rm(list = ls()) # Remover todos os objetos!

> ls() # Área de trabalho vazia
Símbolos especiais
Alguns caracteres e simbolos são reservados para uso especial dentro do R.
Esses devem ser evitados ou não usados fora da proposta original.
Os principais estão listados a seguir:
NA # Indeterminado (Not Available)

NaN # Indeterminado (Not a Number)

Inf # Infinito

TRUE # Variável lógica para verdadeiro, ou abreviação T

FALSE # Variável lógica para falso, ou abreviação F

NULL # Usado para especificar algo nulo ou vazio

pi # Contante pi
Funções de uma letra
Também existem algumas função que são composta apenas por uma letra.
Nomes de objetos com essas letras devem ser evitados.
c # Concatenar valores

q # Fechar o R

t # Transpor uma matriz

C # Definer contrastes para um fator

D # Calcular derivadas

I # Mudar a classe de um fator
Operadores Lógicos
Igual a:  ==
Diferente de:  !=
Maior que:  >
Maior ou igual:  >=
Menor que:  <
Menor ou igual:  <=
Exemplos
bolsa_fapesp_mestrado <-2043

bolsa_capes_mestrado <- 1500

bolsa_capes_mestrado == bolsa_fapesp_mestrado

## [1] FALSE

bolsa_capes_mestrado >= bolsa_fapesp_mestrado

## [1] FALSE

bolsa_capes_mestrado <= bolsa_fapesp_mestrado

## [1] TRUE
Exemplos
Comparação com vetores
bolsas_fapesp <- c(695.70, 2043, 3010.80, 7373.10) 

bolsas_fapesp >= bolsa_capes_mestrado

## [1] FALSE TRUE TRUE TRUE
Operadores Lógicos
Negação: !
E: &
OU: |
NA
Uma característica importante do R que pode dificultar a comparação são os valores
ausentes ou NAs (não disponíveis).
NA representa um valor desconhecido.
Operações envolvendo um valor desconhecido também será desconhecido
Classes Básicas ou Atômicas do R (tipos de dados)
Character: texto
Integer: números inteiros
Numeric: números racionais
Complex: números complexos (raramente usados para Análise de Dados)
Logical: TRUE, FALSE
Factor: variavéis categóricas
Tipos de dados
A dados do tipo numeric são números inteiros ou reais. Os números podem
serem escritos normalmente ou com notação científica, utilizando o E (ou e).
> x <- 4.5 # O . é o separador decimal
> x

[1] 4.5

> class(x)

[1] "numeric"

> is.numeric(x) # Confere se o objeto é um da classe numeric

[1] TRUE

> y <- 1E4 # Notação científica

> y

[1] 10000

> class(y)

[1] "numeric"

> is.numeric(y) 

[1] TRUE
Caractere (character)
Os dados do tipo character são caracteres ou texto. São escritos
obrigatoriamente entre aspas ("" ou ’’) e não são modificados.
Os caracteres podem conter espaços ou acentos, mas isso deve ser utilizado para
mostrar resultados finais, como nomes dos eixos em gráficos.
> x <- "floresta" # Sempre entre aspas

> class(x)

[1] "character"

> is.character(x) # Confere se o objeto é um da classe character

[1] TRUE

> y <- "Diversidade (Simpson)" # Pode conter espaços ou acentos

> class(y)

[1] "character"

> is.character(y)

[1] TRUE
Lógico (logical)
Os dados do tipo logical são usados para as palavras que indicam verdadeiro ou
falso, sendo as palavras TRUE ou T usadas para indicar verdadeiro e as palavras
palavras FALSE ou F para indicar falso.
São escritos com letras maiúsculas sem aspas. São utilizados para indicar opções
onde há apenas duas opções ou como resultado de um teste lógico.
> x <- TRUE # Não precisa estar entre aspas, é uma palavra especial no R

> class(x)

[1] "logical"

> is.logical(x) # Confere se o objeto é um da classe logical

[1] TRUE

> y <- F # Pode ser abreviada
> class(y)

[1] "logical"

> is.logical(y)

[1] TRUE
Tipos de estruturas
Cada tipo de dados são organizados em diferentes estruturas.
Cada uma delas apresenta um característica e pertence a uma determinada classe.
A função class confere a classe (tipo) de um objeto.
São elas:
Vetores
Fatores (strings indexadas)
Data Frames
Matrizes
Listas
Vetores (vector)
Os vetores (vector) são objetos que armazenam um ou mais elementos, do tipo
numeric , character ou logical .
Os vetores podem ser criados com a função c , que concatena objetos.
Um vetor só suporta um único tipo de dados. (Dados homogêneos)
Os vetores ainda possuem duas características, uma delas é o comprimento que
pode ser encontrado com a função length a segunda dela o nomes de cada
elemento, acessada pela função names .
Exemplos
> numeros <- c(2, 5, 6, 78, 2, 233) # A função c contena os números

> class(numeros) # Confere a classe, só pode haver uma classe para todo o vetor

[1] "numeric"

> is.vector(numeros) # Confere se o objeto é um vetor

[1] TRUE

> length(numeros) # Mostra o comprimento do vetor

[1] 6

> names(numeros) # Não há nomes

NULL

> names(numeros) <- c("n1", "n2", "n3", "n4", "n5", "n6") # Atribuir nomes ao vetor numeros

> names(numeros) # Os nomes do vetor

[1] "n1" "n2" "n3" "n4" "n5" "n6"

> letras <- c("a", "b", "c", "d", "e", "f") # Classe character

> class(letras)

[1] "character"

> logico <- c(F, T) # Classe logical

> logico

[1] FALSE TRUE

class(logico)

[1] "logical"
Indexação de vetores
Como um vetor só tem uma dimensão, para acessar um determinado valor do
vetor é preciso fornecendo a posição do elemento no vetor entre colchetes ( [] ).
Podem ser acessados um ou mais valores ao mesmo tempo.
Se fornecer um valor com o sinal de menos na frente (-), todos os valores serão
selecionados, exceto a posição em questão.
Ainda, nos vetores com nomes é possível fazer a indexação usando o nome do
elemento ou dados lógicos.
Indexação de vetores
> numeros[2] # Seleciona o segundo valor do vetor

n2 

5 

> numeros[c(3, 6, 1)] # Seleciona o terceiro, sexto e primeiro valor do vetor

n3 n6 n1 

6 233 2 

> numeros[1:3] # Seleciona os primeiros três valores do vetor

n1 n2 n3 

2 5 6 

> numeros[12] # Índice fora dos limites, retorna um NA

<NA> 

NA 

> numeros[-3] # Seleciona tudo, exceto o terceiro valor

n1 n2 n4 n5 n6 

2 5 78 2 233 

> numeros["n5"] # Seleciona o elemento com nome n5, no caso o quinto elemento

n5 

2 

> numeros[c(TRUE, FALSE, F, F, F, T)] # Seleciona o elemento o primeiro e último elemento

n1 n6 

2 233 

> numeros[1] <- 12 # muda o valor do item 1 vetor numeros
Fatores (factor) - Dados categóricos
A classe factor serve para designar categorias para um vetor.
Essa classe é semelhante a um vetor da classe character , mas tem importância
maior nas análises estatísticas já que designam um número finito (predefinido) de
categorias.
Tanto números quanto caracteres podem ser convertidos em fatores usando a
função factor .
Esses fatores podem não serem ordenados representado apenas diferentes
categorias ou podem representar categorias ordenadas.
A função ordered gera fatores ordenados, ou seja que as categorias tem
diferentes níveis que são maiores uns que os outros.
> fator1 <- factor(c("Co", "Co", "Co", "Tr", "Tr", "Tr")) # Fator a partir de caracteres

> fator1

[1] Co Co Co Tr Tr Tr

Levels: Co Tr

> class(fator1)

[1] "factor"

> is.factor(fator1) # Confere se o objeto é um da classe factor

[1] TRUE

> levels(fator1) # Confere as categorias do fator

[1] "Co" "Tr"

> nlevels(fator1) # Confere o número de categorias do fator

[1] 2

> is.ordered(fator1) # Confere se o fator é ordenado ou não

[1] FALSE

> fator2 <- ordered(c(1, 1, 2, 2, 3, 3), levels = c(3, 2, 1)) # Cria um fator ordenado

> fator2 # Note que a um símbolo de < para indicar a ordem

[1] 1 1 2 2 3 3

> Levels: 3 < 2 < 1

levels(fator2) # Confere as categorias do fator

[1] "3" "2" "1"

> is.ordered(fator2) # Confere se o fator é ordenado ou não

[1] TRUE

> fator2 <- ordered(fator2, levels = c(2, 1, 3)) # É possível alterar a ordem dos níveis

> fator2

[1] 1 1 2 2 3 3

Levels: 2 < 1 < 3
Indexação de fatores
A indexação dos fatores funciona exatamente da mesma maneira que os vetores.
Ou seja usando o índice entre colchetes []
> fator1[2]

[1] Co

Levels: Co Tr
Tabelas de dados (data.frame)
Tabelas de dados podem ser organizadas em data.frames usando a função
data.frame .
Os data.frame s são tabelas que armazenam um ou mais vetores de dados.
Por essas características eles possuem duas dimensões, linhas e colunas.
Cada coluna, será um vetor, podendo portando armazenar vetores de diferentes
tipos (numeric, character ou logical), entretanto o comprimento de todos vetores
de um data.frame deve ser igual.
Tabelas de dados ( data.frame )
Os data.frames possuem duas dimensões que podem ser encontradas com a
função dim , nrow e ncol .
Os nomes das linhas e colunas podem ser acessada pelas função rownames e
colnames respectivamente.
As funções str, head e tail mostram parte do data.frame para que sejá possível
conferir os dados sem a nescessidade de visualizar a tabela completa.
Data Frames
> numeros <- c(2, 5, 6, 78, 2, 233)

> letras <- c("a", "b", "c", "d", "e", "f")

> names(numeros) <- c("n1", "n2", "n3", "n4", "n5", "n6")

dados <- data.frame(valores = numeros, letras, categorias = y) 

# Combinar vetores em um data.frame. Sempre por colunas

> dados

valores letras categorias

n1 2 a TRUE

n2 5 b TRUE

n3 6 c TRUE

n4 78 d TRUE

n5 2 e TRUE

n6 233 f TRUE
Dataframes - Tidy data
Data frames
O objeto mais importante para o cientista de dados é, claro, a base de dados. No
R, uma base de dados é representa por objetos chamados de data frames
Eles são equivalentes a uma tabela do SQL ou uma planilha do Excel. A principal
característica de um data frame é possuir linhas e colunas:
mtcars

## mpg cyl disp hp drat wt qsec vs am gear carb

## Mazda RX4 21.0 6 160.0 110 3.90 2.620 16.46 0 1 4 4

## Mazda RX4 Wag 21.0 6 160.0 110 3.90 2.875 17.02 0 1 4 4

## Datsun 710 22.8 4 108.0 93 3.85 2.320 18.61 1 1 4 1

## Hornet 4 Drive 21.4 6 258.0 110 3.08 3.215 19.44 1 0 3 1

## Hornet Sportabout 18.7 8 360.0 175 3.15 3.440 17.02 0 0 3 2

## Valiant 18.1 6 225.0 105 2.76 3.460 20.22 1 0 3 1

## Duster 360 14.3 8 360.0 245 3.21 3.570 15.84 0 0 3 4

## Merc 240D 24.4 4 146.7 62 3.69 3.190 20.00 1 0 4 2
mtcars
O mtcars é um data frame nativo do R que contém informações sobre diversos
modelos de carros. Ele possui 32 linhas e 11 colunas (só estamos vendo as
primeiras 10 linhas no slide anterior).
A primeira "coluna" representa apenas o nome das linhas (modelo do carro), não é
uma coluna da base. Repare que ela não possui um nome, como as outras. Essa
estrutura de nome de linha é própria de data frames no R. Se exportássemos essa
base para o Excel, por exemplo, essa coluna não apareceria.
Se você quiser saber mais sobre o mtcars , veja a documentação dele rodando ?
mtcars no Console.
Pertence
Um outro operador muito útil é o  %in% . Com ele, podemos verificar se um valor está
dentro de um conjunto de valores (vetor).
3 %in% c(1, 2, 3)

## [1] TRUE

"a" %in% c("b", "c")

## [1] FALSE
Filtros
Os testes lógicos fazem parte de uma operação muito comum na manipulação de
base de dados: os filtros.
No Excel, por exemplo, quando você filtra uma planilha, o que está sendo feito por
trás é um teste lógico.
Falamos anteriormente que cada coluna das nossas bases de dados será
representada dentro do R como um vetor.
O comportamento que explica a importância dos testes lógicos na hora de filtrar
uma base está ilustrado abaixo:
minha_coluna <- c(1, 3, 0, 10, -1, 5, 20)

minha_coluna > 3

## [1] FALSE FALSE FALSE TRUE FALSE TRUE TRUE

minha_coluna[minha_coluna > 3]

## [1] 10 5 20
Mais sobre data frames
Chegou a hora de usarmos tudo o que aprendemos na seção anterior para exploramos
ao máximo o nosso objeto favorito: o data frame.
Para isso, continuaremos a usar o  mtcars .
mtcars

## mpg cyl disp hp drat wt qsec vs am gear carb

## Mazda RX4 21.0 6 160.0 110 3.90 2.620 16.46 0 1 4 4

## Mazda RX4 Wag 21.0 6 160.0 110 3.90 2.875 17.02 0 1 4 4

## Datsun 710 22.8 4 108.0 93 3.85 2.320 18.61 1 1 4 1

## Hornet 4 Drive 21.4 6 258.0 110 3.08 3.215 19.44 1 0 3 1

## Hornet Sportabout 18.7 8 360.0 175 3.15 3.440 17.02 0 0 3 2

## Valiant 18.1 6 225.0 105 2.76 3.460 20.22 1 0 3 1

## Duster 360 14.3 8 360.0 245 3.21 3.570 15.84 0 0 3 4

## Merc 240D 24.4 4 146.7 62 3.69 3.190 20.00 1 0 4 2

## Merc 230 22.8 4 140.8 95 3.92 3.150 22.90 1 0 4 2

## Merc 280 19.2 6 167.6 123 3.92 3.440 18.30 1 0 4 4
Acessando as colunas
Lembrando que cada coluna de um data frame é um vetor, podemos usar o operador
$ para acessar cada uma de suas colunas.
mtcars$mpg

## [1] 21.0 21.0 22.8 21.4 18.7 18.1 14.3 24.4 22.8 19.2 17.8 16.4 17.3 15.2
## [15] 10.4 10.4 14.7 32.4 30.4 33.9 21.5 15.5 15.2 13.3 19.2 27.3 26.0 30.4

## [29] 15.8 19.7 15.0 21.4

mtcars$cyl

## [1] 6 6 4 6 8 6 8 4 4 6 6 8 8 8 8 8 8 4 4 4 4 8 8 8 8 4 4 4 8 6 8 4

mtcars$wt

## [1] 2.620 2.875 2.320 3.215 3.440 3.460 3.570 3.190 3.150 3.440 3.440

## [12] 4.070 3.730 3.780 5.250 5.424 5.345 2.200 1.615 1.835 2.465 3.520

## [23] 3.435 3.840 3.845 1.935 2.140 1.513 3.170 2.770 3.570 2.780
Dimensões
A classe data frame possui uma característica especial: seus objetos possuem duas
dimensões.
class(mtcars)

## [1] "data.frame"

dim(mtcars)

## [1] 32 11

O resultado do código dim(mtcars) nos diz que a primeira dimensão tem
comprimento 32 e a segunda dimensão tem comprimento 11. Em outras palavras:
a base mtcars tem 32 linhas e 11 colunas.
Subsetting
Ter duas dimensões significa que devemos usar dois índices para acessar os valores
de um data frame (fazer subsetting).
Para isso, ainda usamos o colchete, mas agora com dois argumentos: [linha,
coluna].
mtcars[2, 3]

## [1] 160

O código acima está nos devolvendo o valor presente na segunda linha da terceira
coluna da base mtcars .
Também podemos pegar todos as linhas de uma coluna ou todas as colunas de
uma linha deixando um dos argumentos vazio:
# Todas as linhas da coluna 1

mtcars[,1]

## [1] 21.0 21.0 22.8 21.4 18.7 18.1 14.3 24.4 22.8 19.2 17.8 16.4 17.3 15.2

## [15] 10.4 10.4 14.7 32.4 30.4 33.9 21.5 15.5 15.2 13.3 19.2 27.3 26.0 30.4

## [29] 15.8 19.7 15.0 21.4

# Todas as colunas da linha 1

mtcars[1,]

## mpg cyl disp hp drat wt qsec vs am gear carb

## Mazda RX4 21 6 160 110 3.9 2.62 16.46 0 1 4 4
Selecionando colunas
Podemos usar o subsetting para selecionar colunas:
mtcars[, c(1, 2)]

## mpg cyl

## Mazda RX4 21.0 6

## Mazda RX4 Wag 21.0 6

## Datsun 710 22.8 4

## Hornet 4 Drive 21.4 6

## Hornet Sportabout 18.7 8

## Valiant 18.1 6

## Duster 360 14.3 8

## Merc 240D 24.4 4

## Merc 230 22.8 4

## Merc 280 19.2 6
mtcars[, c("mpg", "am")]

## mpg am

## Mazda RX4 21.0 1

## Mazda RX4 Wag 21.0 1

## Datsun 710 22.8 1

## Hornet 4 Drive 21.4 0

## Hornet Sportabout 18.7 0

## Valiant 18.1 0

## Duster 360 14.3 0

## Merc 240D 24.4 0

## Merc 230 22.8 0

## Merc 280 19.2 0

Nos dois exemplos, exibimos apenas as 5 primeiras linhas do data frame.
Filtrando colunas
Também podemos usar o subsetting para filtrar colunas:
mtcars$cyl == 4

## [1] FALSE FALSE TRUE FALSE FALSE FALSE FALSE TRUE TRUE FALSE FALSE

## [12] FALSE FALSE FALSE FALSE FALSE FALSE TRUE TRUE TRUE TRUE FALSE

## [23] FALSE FALSE FALSE TRUE TRUE TRUE FALSE FALSE FALSE TRUE

mtcars[mtcars$cyl == 4, ]

## mpg cyl disp hp drat wt qsec vs am gear carb

## Datsun 710 22.8 4 108.0 93 3.85 2.320 18.61 1 1 4 1

## Merc 240D 24.4 4 146.7 62 3.69 3.190 20.00 1 0 4 2

## Merc 230 22.8 4 140.8 95 3.92 3.150 22.90 1 0 4 2

## Fiat 128 32.4 4 78.7 66 4.08 2.200 19.47 1 1 4 1

## Honda Civic 30.4 4 75.7 52 4.93 1.615 18.52 1 1 4 2

## Toyota Corolla 33.9 4 71.1 65 4.22 1.835 19.90 1 1 4 1

## Toyota Corona 21.5 4 120.1 97 3.70 2.465 20.01 1 0 3 1

## Fiat X1-9 27.3 4 79.0 66 4.08 1.935 18.90 1 1 4 1

## Porsche 914-2 26.0 4 120.3 91 4.43 2.140 16.70 0 1 5 2

## Lotus Europa 30.4 4 95.1 113 3.77 1.513 16.90 1 1 5 2

## Volvo 142E 21.4 4 121.0 109 4.11 2.780 18.60 1 1 4 2
O código  mtcars$cyl == 4  nos diz em quais linhas estão os carros com 4 cilindros.
Quando usamos o vetor de  TRUE  e  FALSE  resultante dentro do subsetting das linhas
em  mtcars[mtcars$cyl == 4, ] , o R nos devolve todos as colunas dos carros com 4
cilindros. A regra é a seguinte: linha com  TRUE  é retornada, linha com  FALSE  não.
Outro exemplo:
mtcars[mtcars$mpg > 25, ]

## mpg cyl disp hp drat wt qsec vs am gear carb

## Fiat 128 32.4 4 78.7 66 4.08 2.200 19.47 1 1 4 1

## Honda Civic 30.4 4 75.7 52 4.93 1.615 18.52 1 1 4 2

## Toyota Corolla 33.9 4 71.1 65 4.22 1.835 19.90 1 1 4 1

## Fiat X1-9 27.3 4 79.0 66 4.08 1.935 18.90 1 1 4 1

## Porsche 914-2 26.0 4 120.3 91 4.43 2.140 16.70 0 1 5 2

## Lotus Europa 30.4 4 95.1 113 3.77 1.513 16.90 1 1 5 2
Vocabulário
A seguir, apresentamos algumas funções nativas do R úteis para trabalhar com data
frames :
head()  - Mostra as primeiras 6 linhas.
tail()  - Mostra as últimas 6 linhas.
dim()  - Número de linhas e de colunas.
names()  - Os nomes das colunas (variáveis).
str()  - Estrutura do data frame. Mostra, entre outras coisas, as classes de cada
coluna.
cbind()  - Acopla duas tabelas lado a lado.
rbind()  - Empilha duas tabelas.
Funções
Funções permitem automatizar tarefas comuns de forma mais poderosa do que
copiar e colar.
O R possui muitas funções já implementadas.
Pacotes são coleções de funções, dados e documentação que ampliam as
capacidades do R básico. Veremos como instalá-los no final desta atividade!
Você pode desenvolver suas próprias funções!
Exemplo de funções básicas do R
# Combinar elementos - Função c() 

ano_nascimento_irmaos <- c(1993, 1998, 2001, 2012, 2012)

# Podemos fazer operações com o resultado

idade_irmaos <- 2020 - ano_nascimento_irmaos

idade_irmaos

## [1] 27 22 19 8 8

# Calculando a média - Função mean()

media_idade_irmaos <- mean(idade_irmaos)

media_idade_irmaos

## [1] 16.8
Estrutura de uma função
Nome - é como ela fica salva no ambiente, esse nome é importante para usarmos
a função.
Argumentos - são parâmetros usados internamente pela função. Muitas funções
possuem argumentos com valores padrão.
Corpo - o código que será executado. O resultado dependerá dos argumentos
oferecidos.
# para criar uma funcao

nome_da_funcao <- function(argumentos){

corpo da função

}

# para usar essa função

nome_da_funcao(argumentos = ...)
Um exemplo:
Vamos criar uma função que soma dois números.
minha_soma <- function(x, y) { 

soma <- x + y soma # resultado retornado

}

Essa função tem os seguintes componentes:
minha_soma : nome da função
x  e  y : argumentos da função
soma <- x + y : operação que a função executa
soma : valor retornado pela função
Então...
Após rodarmos o código de criar a função, podemos utilizá-la como qualquer
outra função do R.
minha_soma(2, 2)

## [1] 4

O objeto soma só existe dentro da função, isto é, além de ele não ser colocado no
seu environment, ele só existirá na memória (RAM) enquanto o R estiver
executando a função.
Depois disso, ele será apagado. O mesmo vale para os argumentos x e y .
Valor retornado
O valor retornado pela função representa o resultado que receberemos ao utilizá-
la.
Por padrão, a função retornará sempre a última linha de código que existir
dentro dela.
No nosso exemplo, a função retorna o valor contido no objeto  soma , pois é isso
que fazemos na última linha de código da função.
Repare que se atribuirmos o resultado a um objeto, ele não será mostrado no
console:
resultado <- minha_soma(3, 3)

# Para ver o resultado, rodamos o objeto `resultado`

resultado

## [1] 6
Funções importantes do R base
Função O que retorna?
sum() Soma
mean() Média
median() Mediana
var() Variância (simples)
sd() Desvio Padrão
max() Valor máximo
min() Valor mínimo
round() Valor arredondado
O Tidyverse
É uma coleção de pacotes R projetados para a ciência de dados. Todos os pacotes
compartilham uma mesma filosofia de desenvolvimento, sintaxe e estruturas de
dados. https://www.tidyverse.org/
library(tidyverse)
Pacotes do Tidyverse
ggplot2: cria gráficos
dplyr: manipulação de dados
tidyr: arrumar os dados
readr: leitura dos dados
purrr: ferramentas para programação funcional, trabalha com funções e vetores
tibble: dataframes modernos, mais simples de manipular
magrittr: facilita a escrita e leitura do código
stringr: trabalha com strings
Importar arquivos
Pacote readr: funções para ler arquivos texto
read_csv
read_csv2
read_delim
read_log
read_rds
Pacote readxl: função para ler arquivo Excel
read_excel
Importar arquivos:
Via código (próximo slide), ou via "Import Dataset"
RStudio -> Environment -> Import Dataset
From Excel -> arquivos xls
From text (readr) -> csv
File/URL - Colocar o link da tabela (se estiver online), ou colocar o caminho da
tabela no seu projeto
Update - Se selecionar URL, após colar a URL clique em UPDATE. O R irá
procurar essa tabela, e caso encontre, apresentará uma "amostra" da sua
tabela.
SEMPRE copie o Code Preview, e guarde no seu código para que você tenha
o registro das etapas realizadas (lembre-se da reprodutibilidade).
Algumas Operações
Dados de exemplo
ex1 <- c(4, 8.987, 48.04, 3.22, 43, 2.34) # Números positivos

ex1

[1] 4.000 8.987 48.040 3.220 43.000 2.340

ex2 <- c(-12, -8.12, 2100, 7, NA, -57.3) # Números, negativos e faltantes

ex2

[1] -12.00 -8.12 2100.00 7.00 NA -57.30

ex3 <- c(8, 9, 1.65, 12.8, 1, 199) # Mais números

ex3

[1] 8.00 9.00 1.65 12.80 1.00 199.00

A <- matrix(c(1,2,3, 11,12,13), nrow = 2, ncol = 3) # Matriz, 2x3

A

[,1] [,2] [,3]

[1,] 1 3 12

[2,] 2 11 13

B <- matrix(c(12,29,10, 18,28,54, 9, 7, 35), nrow = 3, ncol = 3) # Matriz, 3x3

B

[,1] [,2] [,3]

[1,] 12 18 9

[2,] 29 28 7

[3,] 10 54 35
Estatística descritiva
mean(ex1) # Média

[1] 18.2645

median(ex1) # Mediana

[1] 6.4935

var(ex1) # Variância

[1] 453.58

sd(ex1) # Desvio padrão

[1] 21.29742

cor(ex1, ex3) # Correlação entre ex1 e ex3

[1] -0.415766

cor(ex1, ex3, method = "spearman") # Correlação entre ex1 e ex3 usando Spearman

[1] -0.8857143

cov(ex1, ex3) # Covariação entre ex1 e ex3

[1] -697.0587
Gerar números e sequências
1:10 # Sequência de 1 a 10

> [1] 1 2 3 4 5 6 7 8 9 10

-9:1 # Sequência de -9 a 1

> [1] -9 -8 -7 -6 -5 -4 -3 -2 -1 0 1

seq(from = 1, to = 10, by = 2) # Sequência regular de 1 a 10 por 2

> [1] 1 3 5 7 9

seq(from = 1, to = 3, length.out = 8) # Sequência regular de 1 a 3, com 8 valores

> [1] 1.000000 1.285714 1.571429 1.857143 2.142857 2.428571 2.714286 3.000000

seq_len(12) # Sequência de inteiros de 1 a 12

> [1] 1 2 3 4 5 6 7 8 9 10 11 12

paste("A", 1:6, sep = ".") # Sequência regular de caracteres

> [1] "A.1" "A.2" "A.3" "A.4" "A.5" "A.6"

rep(3, 6) # Repetir o valor 3 por 6 vezes

> [1] 3 3 3 3 3 3

rep(1:4, 3) # Repetir a sequência 1 a 4 por 3 vezes

> [1] 1 2 3 4 1 2 3 4 1 2 3 4

rep(1:4, each = 3) # Repetir os valores 1 a 4 por 3 vezes cada

> [1] 1 1 1 2 2 2 3 3 3 4 4 4
Gerar dados aleatórios e amostragem
runif(5, min = 0, max = 10) # Gerar distribuição uniforme, entre 0 e 10...

> [1] 6.742459 8.103175 3.738857 1.388355 3.277760

runif(5, min = 0, max = 10) # ... Note que é diferente a cara execução

> [1] 7.8895152 3.0344302 1.6837370 4.8089219 0.5780624

rnorm(5, mean = 0, sd = 1) # Gerar distribução normal com média 0 e variância 1

> [1] -0.57249929 -1.73642564 0.59179279 -1.28624999 0.05649468

rpois(5, lambda = 1) # Gerar distribuição de Poisson, com lambda 1

> [1] 3 1 1 1 0

sample(1:10, size = 4) # Amostrar 4 valores da sequência de 1 a 10 sem reposição...

> [1] 7 6 5 9

sample(1:10, size = 4, replace = TRUE) # ... Amostrar com reposição

> [1] 10 6 10 1

moeda <- c("cara","coroa") # Vetor com resultados de uma moeda

moeda

> [1] "cara" "coroa"

sample(moeda, size = 1) # Amostrar um resultado

> [1] "coroa"

sample(moeda, size = 3, replace = TRUE) # Amostrar 3 vezes, replace deve ser verdadeiro

> [1] "coroa" "cara" "cara"
Para conhecer mais sobre estatística em R
Siga os links:
https://vanderleidebastiani.github.io/tutoriais/Estatistica_Basica_em_R.html
https://docs.ufpr.br/~aanjos/CE002A/estdescritiva.pdf
https://rpubs.com/EstatBasica
http://www.estatisticacomr.uff.br/wp-
content/uploads/2018/10/ap_mci2010.pdf
http://www.uft.edu.br/engambiental/prof/catalunha/arquivos/r/r_bruno.pdf
O pacote readr
O pacote  {readr}  do tidyverse é utilizado para importar arquivos de texto,
como  .txt  ou  .csv , para o R.
library(readr)

O  {readr}  transforma arquivos de textos em  tibbles  usando as funções:

read_csv() , read_tsv() , read_delim() , read_table() ou read_log()
Algumas funções do pacote:
read_csv() : para arquivos separados por vírgula.
read_tsv() : para arquivos separados por tabulação.
read_delim() : para arquivos separados por um delimitador genérico. O
argumento  delim=  indica qual caractere separa cada coluna no arquivo de texto.
read_table() : para arquivos de texto tabular com colunas separadas por espaço.
read_fwf() : para arquivos compactos que devem ter a largura de cada coluna
especificada.
read_log() : para arquivos padrões de log.
Tibbles são data frames com ajustes que as deixam mais amigáveis a nós cientistas
de dados. Elas são parte do pacote {tibble}. Assim, para começar a usá-las, instale
e carregue o pacote.
install.packages("tibble")

library(tibble)
Lendo arquivos de texto
Como exemplo, utilizaremos uma base de filmes do IMDB, gravada em diversos
formatos. O download dos arquivos pode ser realizado clicando aqui.
Primeiro, vamos ler a base em formato  .csv .
imdb_csv <- read_csv(file = "imdb.csv")

## Rows: 11340 Columns: 20

## ── Column specification ────────────────────────────────────────────────────────

## Delimiter: ","

## chr (11): id_filme, titulo, data_lancamento, generos, pais, idioma, direcao,...

## dbl (9): ano, duracao, orcamento, receita, receita_eua, nota_imdb, num_aval...

## 

## Use `spec()` to retrieve the full column specification for this data.

## Specify the column types or set `show_col_types = FALSE` to quiet this message.
Quando vírgulas separam casas decimais
No Brasil, as vírgulas são utilizadas para separar as casas decimais dos números,
inviabilizando o uso de arquivos  .csv . Nesses casos os arquivos  .csv  passam a
ser separados por ponto-e-vírgula.
Para importar bases de arquivos separados por ponto-e-vírgula no R, basta usar a
função  read_csv2() .
imdb_csv2 <- read_csv2("dados/imdb2.csv")
Lendo arquivos txt
Arquivos  .txt  em geral podem ser lidos com a função  read_delim() .
Além do caminho até o arquivo, você também precisa indicar qual é o caractere
utilizado para separar as colunas da base.
Um arquivo separado por tabulação, por exemplo, pode ser lido utilizando a o
código abaixo.
O código  t  é uma forma textual de representar a tecla TAB.
imdb_txt <- read_delim("dados/imdb.txt", delim = "t")
Escrevendo arquivos de texto
Para a maioria das funções  read_ , existe uma respectiva função  write_ .
Essas funções servem para salvar bases em um formato específico de arquivo.
Além do caminho/nome do arquivo a ser criado, você também precisa passar o
objeto que será escrito.
Para o arquivo criado funcionar corretamente, você precisa especificar a extensão
correta no nome do arquivo.
# Arquivo .csv

write_csv(x = mtcars, path = "data/mtcars.csv")

# Base separada por tabulação

write_delim(x = mtcars, path = "data/mtcars.txt", delim = "t")
Gráficos
Para construir um gráfico usa-se função genérica plot .
A função plot é uma função que produz gráficos de maneira automática
dependendo do tipo de informação e classe do objeto passado para ela.
Quando apropriado, os eixos, nomes dos eixos e títulos são gerados
automaticamente (a menos se especificado o contrário).
Ainda existem várias funções auxiliares para adicionar elementos ao gráfico.
Função plot()
Dados
Dados anscombe é um conjunto de dados didáticos para uso em regressões
lineares. O conjunto é formado por 4 pares de variávis independente e
dependente totalizando 11 observações
> data(anscombe)

> dados <- anscombe 

> str(dados)

'data.frame':	 11 obs. of 8 variables:

$ x1: num 10 8 13 9 11 14 6 4 12 7 ...

$ x2: num 10 8 13 9 11 14 6 4 12 7 ...

$ x3: num 10 8 13 9 11 14 6 4 12 7 ...

$ x4: num 8 8 8 8 8 8 8 19 8 8 ...

$ y1: num 8.04 6.95 7.58 8.81 8.33 ...

$ y2: num 9.14 8.14 8.74 8.77 9.26 8.1 6.13 3.1 9.13 7.26 ...

$ y3: num 7.46 6.77 12.74 7.11 7.81 ...

$ y4: num 6.58 5.76 7.71 8.84 8.47 7.04 5.25 12.5 5.56 7.91 ...
Gráfico de pontos
Se x e y são dois vetores do tipo numeric o gráfico resultante é de pontos, sendo
mostrado x as coordenadas dos pontos no eixo horizontal e y as coordenadas do
eixo vertical.
> plot(dados$x1, dados$y1) # plot(y1 ~ x1, data=dados) produz o mesmo resultado.
Gráfico de séries
Se apenas um vetor do tipo numeric é fornecido a função gera uma série com os
dados, seguindo a ordem que os valores estão no vetor.
> plot(dados$x1)
Gáficos de barra
Se apenas um vetor do tipo factor é fornecido a função gera um gráfico de barra.
plot(as.factor(dados$x1))
Função par()
Os parâmetros gráficos gerais são predefinidos pela função par
Cada parâmetro define uma opção de configuração do gráfico
Alterando eixos
Uma das opções mais utilizada na elaboração de gráficos se refere as alterações
dos aspectos relacionados aos eixos.
Argumentos:
xlab e ylab - Alterar nomes dos eixos x e y respectivamente. Podem ser usados
junto com font.lab para alterar o tipo de fonte, col.lab para alterar cor e cex.lab
para alterar o tamanho da fonte.
main - Alterar nomes do título do gráfico. Pode ser usado junto com font.main,
col.main e cex.main, para alterar fonte, cor e tamanho do título respectivamente.
Exemplo:
plot(dados$x1, dados$y1, 

xlab = "Variável preditora", ylab = "Variável resposta", 

main = "Anscombe")
Alguns exemplos de tipos de gráficos gerados em R
Para verificar siga os links abaixo (e continue verificando as opções):
https://vanderleidebastiani.github.io/tutoriais/Graficos_com_R.html#Gr%C3%A
1ficos_personalizados
https://livro.curso-r.com/8-graficos.html
Exportar resultados
Assim como para importar dados, para exportar há muitas funções para exportar
dados.
Para exportar tabelas completas é possível usar as funções write.table ou write.csv,
basta especificar o objeto com a tabela completa e o nome do arquivo de saída.
O arquivo será salvo no diretório de trabalho do R.
Para exportar os resultados de análises para visualização é melhor usar
o Rmarkdown (um texto básico pode ser encontrado
em https://vanderleidebastiani.github.io/tutoriais e https://livro.curso-r.com/9-
relatorios.html).
> write.table(dados, "dados.txt", sep = " ") # Exportar em .txt

> write.csv(dados, "dados.csv") # Exportar em .csv
Comunicando resultados
Sobre detalhes acerca de relatórios e comunicação em R siga os links:
https://livro.curso-r.com/9-relatorios.html
https://beatrizmilz.github.io/IV-SER-RLadies/#1
https://vanderleidebastiani.github.io/tutoriais/Documentacao_de_resultados_u
sando_R_Markdown.html
https://beatrizmilz.github.io/aMostra-IME-2019-Xaringan/#11
https://beatrizmilz.github.io/slidesR/rmarkdown/rmarkdown_packages.html#1
https://r-ladies-sao-paulo.github.io/xaringan/slides.html#6
Prática (Estudos de caso)
Para seguir um tutorial de uma análise de dados em R, siga o link:
https://beatrizmilz.github.io/Oficina_intro_R_UFABC_2018/#64
E continue a apresentação até o fim (há mais 2 estudos de caso nesta
apresentação)
Onde estudar mais?
Repositório de materias de estudo com R
Curso R
Curso-R - Cursos presenciais sobre R.
Material Curso-R - Material disponibilizado pela Curso-R para estudo.
Blog Curso-R - Blog do Curso-R com diversos conteúdos interessantes.
Datacamp: Introdução ao R/Introduction to R - Conteúdo: introdução, tipos de
dados no R: vetores, matrizes, fatores, data frames, listas.
Livros
Hands-On Programming with R - Livro em inglês, disponibilizado gratuitamente
online. Conteúdo: básico do R e RStudio, Pacotes, objetos, tipos de dados, funções,
etc.
R for Data Science - Livro em inglês, disponibilizado gratuitamente online.
Conteúdo muito bom sobre R.
R Cookbook
Ciência de Dados com R - Instituto Brasileiro de Pesquisa e Análise de Dados
Biblioteca do R-Project, livros em diversas línguas: https://www.r-
project.org/doc/bib/R-books.html
Cheatsheets
Ambiente de desenvolvimento RSTUDIO: Português, Inglês
Importar dados/Data import - Inglês
Visualização de dados - Português
Manipular dados - Português
Data transformation - Inglês
Trabalhar com textos/ String manipulation - Inglês
Comunicar seus resultados - RMarkdown - Inglês
Criar gráficos com Ggplot2 - Inglês
LaTeX - Inglês
Expressões regulares - Inglês
Pode conferir também outras cheatsheets em inglês no site: RStudio Cheatsheets -
RStudio
Obrigado
Edkallenn Lima
Mestre em Ciência da Computação, Agente de Polícia Federal e professor

Mais conteúdo relacionado

Cartilha de R para Estatística e Data Science.pdf

  • 1. Cartilha de R para Estatística e Data Science Edkallenn Lima Mestre em Ciência da Computação, Agente de Polícia Federal e professor
  • 2. O que é R e por que aprendê-lo? R é uma linguagem de programação estatística que vem passando por diversas evoluções e se tornando cada vez mais uma linguagem de amplos objetivos R é também um conjunto de pacotes e ferramentas para computação estatística, munido de funções que facilitam sua utilização, desde a criação de simples rotinas até análises de dados complexas, com visualizações bem acabadas
  • 3. Motivos para aprender R É gratuito, parte do projeto Free Software Foundation's GNU; Curva de aprendizado bastante amigável, sendo muito fácil de se aprender; Enorme quantidade de tutoriais e ajuda disponíveis gratuitamente na internet; É excelente para criar rotinas e sistematizar tarefas repetitivas; Amplamente utilizado pela comunidade acadêmica e pelo mercado; Quantidade enorme de pacotes, para diversos tipos de necessidades; Ótima ferramenta para criar relatórios e gráficos.
  • 4. R também é uma linguagem de programação Qual é a vantagem? É um texto É reprodutível Dá para compartilhar!
  • 5. O que podemos fazer com R? Análise de dados - Estatística, modelagem, etc. Visualização de dados Apresentações Relatórios dinâmicos Escrever livros - Pacote Bookdown Mineração de dados E muito mais ...
  • 6. RStudio RStudio é o IDE da Linguagem R, ou seja, o ambiente que utilizamos para editar e executar os códigos em R. Facilita a utilização do R. É possível usar o R em Windows, Linux e Mac O R é, prioritariamente, um ambiente de programação de linha de comando Felizmente existe o RStudio, ferramenta auxiliar que usaremos durante a cartilha
  • 7. Vantagens do RStudio Sugestão de funções ou objetos ao escrever palavras similares nas linhas de código; Autocompletar de funções; Abas específicas para determinada ação, tal como gráficos, bases de dados etc; Histórico de códigos utilizados; Executor de linhas de código sequenciais; Identificação de erros antes de executá-los; Separação entre linhas de código e resultados, facilitando a escrita e execução de comandos.
  • 8. Instalando RStudio Primeiro deve-se instalar o R nesse link Em seguida, basta acessar: https://rstudio.com/products/rstudio/download/. Na tela inicial você já vai ver DOWNLOAD; Clique no link e o download vai dar início. Depois de baixado, é só clicar no instalador e ir clicando em próximo e/ou avançar, como a maioria dos programas
  • 9. Layout e funcionalidades A primeira janela no topo a esquerda é onde escrevemos os códigos, ou seja, é o editor de texto dessa interface. Após escrever o código, existem duas formas de executar o script: (1) através do ícone Run ; ou (2) através do atalho ctrl + enter . Essas duas alternativas vão executar o script de forma sequencial. Para salvar o script em um arquivo basta clicar no ícone do disquete, aparecerá o diretório que você deseja salvar, bem como o campo para nomear o arquivo
  • 10. Visão geral da Área de trabalho do RStudio
  • 11. Layout A segunda janela abaixo e a esquerda é a janela referente ao Console , ou seja, é o terminal onde os comandos são executados. (O R vive aqui!) Todos os comandos executados na janela de editor de texto aparecem aqui. No Console também podemos executar comandos isolados, de forma direta do mesmo jeito que faríamos no terminal convencional do Linux. e funcionalidades Acima a direita você tem duas abas: Environment , History e Connections . Nessa janela, na aba Environment você vai ter seus objetos, seus dados e variáveis criadas. Na aba History é onde ficará armazenado seu histórico do script. Esse histórico é útil caso o RStudio se feche ou você escolha salvar seu workplace, ao abri-lo você não perderá o histórico.
  • 12. Layout e Funcionalidades Por fim, abaixo a direita uma outra janela, nela há cinco abas: Files , Plots , Packages , Help e Viewer . Na aba File terá o endereço do seu working directory, ou seja, do diretório no qual você está trabalhando. Para saber qual o diretório que você está trabalhando, basta digitar no Console o código getwd(). Na aba Plots é onde o gráfico que eventualmente você vai gerar vai aparecer. Já na aba Packages vai aparecer uma lista de pacotes que você pode selecionar e instalar na hora. Na aba Help é onde vai aparecer a documentação com exemplos e explicações sobre alguma função que você possa ter dúvidas de como utilizar.
  • 13. Atalhos úteis dentro do RStudio CTRL + ENTER : roda a linha selecionada no script CTRL + ALT + I :cria um chunk no R Markdown ALT + SHIFT + k : janela com todos os atalhos disponíveis ALT+-: cria no script um sinal de atribuição (<-). Você o usará o tempo todo. CTRL+SHIFT+M: (%>% ou |>) operador pipe. Guarde esse atalho, será bastante utilizado. CTRL+1: altera cursor para o script. CTRL+2: altera cursor para o console. Chunks são os blocos de código que são executados quando o documento é compilado No MacOS, substitua CTRL por command e ALT por option.
  • 14. Arquivos R gera alguns tipos de arquivos que podem ser salvos. As principais deles são: .R - Usado para salvar códigos criados e rotinas de análises (scripts). .RData - Usado para salvar os objetos da área de trabalho (workspace). .Rhistory - Usado para salvar o histórico dos comandos executados (normalmente salvo automaticamente). .Rproj - Formato exclusivo do RStudio, serve para salvar todas as informações utilizadas anteriormente pelo RStudio de maneira simplificada.
  • 15. Área de Trabalho e Diretório de Trabalho R sempre fica associado a uma pasta específica do seu computador, essa pasta será o diretório de trabalho (working directory). Os arquivos que estão neste diretório são fáceis de carregar e qualquer arquivo exportado será salvo no diretório caso não especificado o contrário. O diretório de trabalho pode ser alterado, sem qualquer mudanças nos objetos da área de trabalho. getwd() # Mostrar o diretório de trabalho atual dir() # Listar os arquivos do diretório setwd() # Mudar o diretório de trabalho
  • 16. Área de Trabalho e Diretório de Trabalho 2 É possível salvar a área de trabalho inteira e carregar em outro momento. ls() # Listar os objetos da área de trabalho save.image("meu_workspace.RData") # Salvar área de trabalho load("meu_workspace.RData") # Carregar área de trabalho
  • 17. Projetos Uma funcionalidade muito importante do RStudio é a possibilidade de criar projetos. Um projeto é uma pasta no seu computador. Nessa pasta, estarão todos os arquivos que você irá usar ou criar nas suas análises. A principal razão de utilizarmos projetos é organização.
  • 18. RStudio com um projeto aberto
  • 20. Pacotes Pacotes são coleções de funções, dados e documentação que estendem as capacidades do R básico. Eles precisam ser instalados e carregados.
  • 21. Pacotes Como existem muitos pacotes para R e só alguns deles são pré-instalados, os demais precisam ser instalados no computador. O procedimento de instalação precisa ser realizado apenas uma vez (além de atualização de tempos em tempos). Após instalados os pacotes estarão disponíveis para uso, mas é preciso carregar o pacote para utilização. install.packages("bbmle") # Instalar o pacote chamado bbmle library(bbmle) # Carrega o pacote, ou então... require(bbmle) # ... também carrega o pacote
  • 22. Dicas sobre pacotes 1. Você só precisa instalar o pacote uma vez, mas precisa carregá-lo sempre que começar uma nova sessão; 2. Para instalar o pacote use as aspas; 3. Para carregar o pacote, não utilize as aspas.
  • 23. Detalhes Importantes: 1 Diferenças entre caracteres maiúsculos e minúsculos - Existem diferenças entre caracteres maiúsculos e caracteres minúsculos (case sensitive), então o caractere A é diferente do caractere a . Separador decimal - O separador decimal utilizado pelo R é o símbolo do ponto ( . ), o símbolo de vírgula ( , ) é reservado para separar diferentes objetos dentro de uma função. Para alterar essa opção é preciso configurar nas preferências gerais do sistema operacional.
  • 24. Detalhes Importantes: 2 Parênteses, colchetes e chaves - Os símbolos de parênteses ( () ) servem para agrupar objetos dentro de uma função e os símbolos de chaves ( {} ) servem para agrupar funções dentro de outras funções. Os colchetes ( [] ) são utilizados para indexar objetos dentro de outros objetos. Como são símbolos utilizados para agrupar, eles devem ser abertos e fechados, ou seja, deve haver um símbolo para finalizar o agrupamento. Caracteres especiais- Caracteres especiais como por acentos e espaços devem ser evitados. Geralmente não são reconhecidos ou causam muitos problemas, pode-se usar os símbolos de ponto ( . ) ou underline ( _ ) nos lugares dos espaços. Esses símbolos especiais podem se usados no formato de texto nos resultados finais, com por exemplo para exportar resultados gráficos.
  • 25. Noções básicas Ao digitar um comando (na aba Console ) o programa recebe os dados, executa as funções e retorna os resultados. Os dados de entrada podem ser fornecidos na hora de executar a função ou podem estar guardados em algum lugar da memória (geralmente na área de trabalho). Da mesma forma, os resultados das funções podem ser exibidos na tela ou salvos em algum objeto (geralmente na área de trabalho).
  • 26. Usando como uma calculadora Primeiramente o R pode ser usado como uma calculadora. 2+2 # Soma [1] 4 8-3 # Subtração [1] 5 3*8 # Multiplicação [1] 24 8/2 # Divisão [1] 4 2^8 # Potências [1] 256 (2+4)/7 # Prioridade de solução [1] 0.8571429 Note que acompanhado do resultado é mostrado o [1]. Esse valor indica a posição (índice) do primeiro valor do resultado.
  • 27. Variáveis Em R, uma variável pode ser definida com o uso do operador <- Ele significa gets e pode ser traduzido como "atribuição" ou "recebe" Por exemplo: > x <- 1 O código acima atribui à variável x o valor 1 Para verificar o valor, basta: > x Após teclar ENTER , o valor será mostrado na tela: [1] 1 Atalho: ALT + - : cria o <- sinal de atribuição
  • 28. Exemplos nome <- "Daenerys Targaryen" nome ## [1] "Daenerys Targaryen" horas_trabalhadas <- 160 horas_trabalhadas ## [1] 160 salario <- 3984.23 salario ## [1] 3984.23 ativo <- TRUE ativo ## [1] TRUE
  • 29. Variáveis Esta notação para atribuição de variáveis é comumente usada em pseudocódigos e comum em livros que apresentam discussões sobre algoritmos Não é necessário definir o tipo da variável (tipagem dinâmica) Mais exemplos de atribuições: # atribuindo uma cadeia de caracteres (string) à variável x > x <- "Olá Mundo" > x [1] "Olá mundo" # Atribuindo um valor numérico do tipo real à variável x > x <- 3.45 > x [1] 3.45 É possível usar = ou <- e isso pode ser feito com qualquer tipo de objeto
  • 30. Nomes de objetos (variáveis) Os nomes devem começar com uma letra. Podem conter letras, números, _ e . Não usar acentuação e espaços nos nomes de objetos. Recomendação do autor do livro  R  For Data Science: usar_snake_case, ou seja, palavras escritas em minúsculo separadas pelo underscore ( _ ). O  R  é case sensitive, isto é, faz a diferenciação entre as letras minúsculas e maiúsculas. Portanto, um objeto chamado  teste  é diferente de uma outro objeto chamada  Teste .
  • 31. Funções matemáticas Assim como todas as linguagens de programação, o R possui uma série de funções nativas. Entre elas, estão as matemáticas. Uso de algumas a seguir: > # raiz quadrada > sqrt(2) [1] 1.414214 > #exponencial > exp(1) [1] 2.718282 > #cosseno > cos(90) [1] -0.4480736 > #logaritmo: o primeiro argumento é o valor que será aplicada a função logaritmo. O segundo é a base > log(1024,2) [1] 10 Nos exemplos acima não foram realizadas atribuições. As funções são executadas e os resultados não são acessíveis por meio de variáveis
  • 32. Outra forma de executar funções matemáticas > log(x = 8) # Logaritmo natural de 8 [1] 2.079442 > rep(x = 1, times = 4) # Repetir o valor 1 quatro vezes [1] 1 1 1 1 > sum(1, 8, 79) # Soma de vários valores [1] 88 > log(x = 8, base = 2) # Logaritmo de 8 na base 2, especificando cada argumento [1] 3 > log(8, 2) # Logaritmo de 8 na base 2, seguindo a ordem dos argumentos na função [1] 3 > log2(1024) #Logaritmo de base 2 [1] 10
  • 33. Ajuda É possível encontrar o arquivo de ajuda das funções com: > help(log) # Abre a ajuda da função log, ou então... ? ?log # ... também abre a ajuda Se a dúvida permanecer, procure no Stack OverFlow ou Google. E se ainda tiver dúvidas, pergunte para a comunidade (há grupos no Telegram e outras redes sociais).
  • 34. Os principais itens do arquivo de ajuda da função são Description - Apresenta um resumo sobre o que a função faz Usage - Mostra todos os argumentos, ordem e as opções reestabelecidas de cada um. Arguments - Explica cada argumento. Details - Detalhes sobre o uso da função, métodos e aplicação. Value - Explica cada um dos os resultados. References – Referências dos métodos. See also - Funções relacionadas. Examples - Mostra alguns exemplos que podem ser executados.
  • 35. Ajuda: args e search A função args mostra apenas os argumentos de uma função, o que pode ser útil em alguns casos. > args(log) # Mostra os argumentos da função log function (x, base = exp(1)) NULL Ainda é possível pesquisar por assunto, usando a função help.search ou ?? . Qualquer documentação com o termo da pesquisa é retornada, incluindo funções de pacotes que não estejam carregados, mas que estejam instalados no computador. help.search(mean) # Procura pelo termo mean, ou então... ??mean # ... faz a mesma busca
  • 36. Cheatsheets O RStudio tem à disposição algumas folhas de cola, as cheatsheets. Elas trazem um resumão de como utilizar diversos pacotes e até o próprio RStudio. Para acessá-las, basta clicar no menu  Help  e então em  Cheatsheets , ou no site da RStudio.
  • 37. O que é um objeto? Ao se desenvolver um projeto, você irá trabalhar com diversos tipos de arquivos, além de informações que serão repetidas ao longo do script. Para reutilizar essas informações ao longo do script utilizamos o que chamamos de objeto Um objeto retém e representa um valor, função ou base de dados
  • 38. Mostrar e remover objetos (variáveis) Durante a execução do R vários objetos são salvos na área de trabalho (workspace). Para visualizar todos os objetos da área de trabalho é possível utilizar a função ls e para remover a função rm. Os objetos removidos não podem mais ser recuperados. > ls() # Listar dos objetos termporários da área de trabalho [1] "x" "X" "y" "z" > rm(X) # Remover objeto X > rm(y) # Remover objeto y > rm(list = ls()) # Remover todos os objetos! > ls() # Área de trabalho vazia
  • 39. Símbolos especiais Alguns caracteres e simbolos são reservados para uso especial dentro do R. Esses devem ser evitados ou não usados fora da proposta original. Os principais estão listados a seguir: NA # Indeterminado (Not Available) NaN # Indeterminado (Not a Number) Inf # Infinito TRUE # Variável lógica para verdadeiro, ou abreviação T FALSE # Variável lógica para falso, ou abreviação F NULL # Usado para especificar algo nulo ou vazio pi # Contante pi
  • 40. Funções de uma letra Também existem algumas função que são composta apenas por uma letra. Nomes de objetos com essas letras devem ser evitados. c # Concatenar valores q # Fechar o R t # Transpor uma matriz C # Definer contrastes para um fator D # Calcular derivadas I # Mudar a classe de um fator
  • 41. Operadores Lógicos Igual a:  == Diferente de:  != Maior que:  > Maior ou igual:  >= Menor que:  < Menor ou igual:  <=
  • 42. Exemplos bolsa_fapesp_mestrado <-2043 bolsa_capes_mestrado <- 1500 bolsa_capes_mestrado == bolsa_fapesp_mestrado ## [1] FALSE bolsa_capes_mestrado >= bolsa_fapesp_mestrado ## [1] FALSE bolsa_capes_mestrado <= bolsa_fapesp_mestrado ## [1] TRUE
  • 43. Exemplos Comparação com vetores bolsas_fapesp <- c(695.70, 2043, 3010.80, 7373.10) bolsas_fapesp >= bolsa_capes_mestrado ## [1] FALSE TRUE TRUE TRUE
  • 44. Operadores Lógicos Negação: ! E: & OU: | NA Uma característica importante do R que pode dificultar a comparação são os valores ausentes ou NAs (não disponíveis). NA representa um valor desconhecido. Operações envolvendo um valor desconhecido também será desconhecido
  • 45. Classes Básicas ou Atômicas do R (tipos de dados) Character: texto Integer: números inteiros Numeric: números racionais Complex: números complexos (raramente usados para Análise de Dados) Logical: TRUE, FALSE Factor: variavéis categóricas
  • 46. Tipos de dados A dados do tipo numeric são números inteiros ou reais. Os números podem serem escritos normalmente ou com notação científica, utilizando o E (ou e). > x <- 4.5 # O . é o separador decimal > x [1] 4.5 > class(x) [1] "numeric" > is.numeric(x) # Confere se o objeto é um da classe numeric [1] TRUE > y <- 1E4 # Notação científica > y [1] 10000 > class(y) [1] "numeric" > is.numeric(y) [1] TRUE
  • 47. Caractere (character) Os dados do tipo character são caracteres ou texto. São escritos obrigatoriamente entre aspas ("" ou ’’) e não são modificados. Os caracteres podem conter espaços ou acentos, mas isso deve ser utilizado para mostrar resultados finais, como nomes dos eixos em gráficos. > x <- "floresta" # Sempre entre aspas > class(x) [1] "character" > is.character(x) # Confere se o objeto é um da classe character [1] TRUE > y <- "Diversidade (Simpson)" # Pode conter espaços ou acentos > class(y) [1] "character" > is.character(y) [1] TRUE
  • 48. Lógico (logical) Os dados do tipo logical são usados para as palavras que indicam verdadeiro ou falso, sendo as palavras TRUE ou T usadas para indicar verdadeiro e as palavras palavras FALSE ou F para indicar falso. São escritos com letras maiúsculas sem aspas. São utilizados para indicar opções onde há apenas duas opções ou como resultado de um teste lógico. > x <- TRUE # Não precisa estar entre aspas, é uma palavra especial no R > class(x) [1] "logical" > is.logical(x) # Confere se o objeto é um da classe logical [1] TRUE > y <- F # Pode ser abreviada > class(y) [1] "logical" > is.logical(y) [1] TRUE
  • 49. Tipos de estruturas Cada tipo de dados são organizados em diferentes estruturas. Cada uma delas apresenta um característica e pertence a uma determinada classe. A função class confere a classe (tipo) de um objeto. São elas: Vetores Fatores (strings indexadas) Data Frames Matrizes Listas
  • 50. Vetores (vector) Os vetores (vector) são objetos que armazenam um ou mais elementos, do tipo numeric , character ou logical . Os vetores podem ser criados com a função c , que concatena objetos. Um vetor só suporta um único tipo de dados. (Dados homogêneos) Os vetores ainda possuem duas características, uma delas é o comprimento que pode ser encontrado com a função length a segunda dela o nomes de cada elemento, acessada pela função names .
  • 51. Exemplos > numeros <- c(2, 5, 6, 78, 2, 233) # A função c contena os números > class(numeros) # Confere a classe, só pode haver uma classe para todo o vetor [1] "numeric" > is.vector(numeros) # Confere se o objeto é um vetor [1] TRUE > length(numeros) # Mostra o comprimento do vetor [1] 6 > names(numeros) # Não há nomes NULL > names(numeros) <- c("n1", "n2", "n3", "n4", "n5", "n6") # Atribuir nomes ao vetor numeros > names(numeros) # Os nomes do vetor [1] "n1" "n2" "n3" "n4" "n5" "n6" > letras <- c("a", "b", "c", "d", "e", "f") # Classe character > class(letras) [1] "character" > logico <- c(F, T) # Classe logical > logico [1] FALSE TRUE class(logico) [1] "logical"
  • 52. Indexação de vetores Como um vetor só tem uma dimensão, para acessar um determinado valor do vetor é preciso fornecendo a posição do elemento no vetor entre colchetes ( [] ). Podem ser acessados um ou mais valores ao mesmo tempo. Se fornecer um valor com o sinal de menos na frente (-), todos os valores serão selecionados, exceto a posição em questão. Ainda, nos vetores com nomes é possível fazer a indexação usando o nome do elemento ou dados lógicos.
  • 53. Indexação de vetores > numeros[2] # Seleciona o segundo valor do vetor n2 5 > numeros[c(3, 6, 1)] # Seleciona o terceiro, sexto e primeiro valor do vetor n3 n6 n1 6 233 2 > numeros[1:3] # Seleciona os primeiros três valores do vetor n1 n2 n3 2 5 6 > numeros[12] # Índice fora dos limites, retorna um NA <NA> NA > numeros[-3] # Seleciona tudo, exceto o terceiro valor n1 n2 n4 n5 n6 2 5 78 2 233 > numeros["n5"] # Seleciona o elemento com nome n5, no caso o quinto elemento n5 2 > numeros[c(TRUE, FALSE, F, F, F, T)] # Seleciona o elemento o primeiro e último elemento n1 n6 2 233 > numeros[1] <- 12 # muda o valor do item 1 vetor numeros
  • 54. Fatores (factor) - Dados categóricos A classe factor serve para designar categorias para um vetor. Essa classe é semelhante a um vetor da classe character , mas tem importância maior nas análises estatísticas já que designam um número finito (predefinido) de categorias. Tanto números quanto caracteres podem ser convertidos em fatores usando a função factor . Esses fatores podem não serem ordenados representado apenas diferentes categorias ou podem representar categorias ordenadas. A função ordered gera fatores ordenados, ou seja que as categorias tem diferentes níveis que são maiores uns que os outros.
  • 55. > fator1 <- factor(c("Co", "Co", "Co", "Tr", "Tr", "Tr")) # Fator a partir de caracteres > fator1 [1] Co Co Co Tr Tr Tr Levels: Co Tr > class(fator1) [1] "factor" > is.factor(fator1) # Confere se o objeto é um da classe factor [1] TRUE > levels(fator1) # Confere as categorias do fator [1] "Co" "Tr" > nlevels(fator1) # Confere o número de categorias do fator [1] 2 > is.ordered(fator1) # Confere se o fator é ordenado ou não [1] FALSE > fator2 <- ordered(c(1, 1, 2, 2, 3, 3), levels = c(3, 2, 1)) # Cria um fator ordenado > fator2 # Note que a um símbolo de < para indicar a ordem [1] 1 1 2 2 3 3 > Levels: 3 < 2 < 1 levels(fator2) # Confere as categorias do fator [1] "3" "2" "1" > is.ordered(fator2) # Confere se o fator é ordenado ou não [1] TRUE > fator2 <- ordered(fator2, levels = c(2, 1, 3)) # É possível alterar a ordem dos níveis > fator2 [1] 1 1 2 2 3 3 Levels: 2 < 1 < 3
  • 56. Indexação de fatores A indexação dos fatores funciona exatamente da mesma maneira que os vetores. Ou seja usando o índice entre colchetes [] > fator1[2] [1] Co Levels: Co Tr
  • 57. Tabelas de dados (data.frame) Tabelas de dados podem ser organizadas em data.frames usando a função data.frame . Os data.frame s são tabelas que armazenam um ou mais vetores de dados. Por essas características eles possuem duas dimensões, linhas e colunas. Cada coluna, será um vetor, podendo portando armazenar vetores de diferentes tipos (numeric, character ou logical), entretanto o comprimento de todos vetores de um data.frame deve ser igual.
  • 58. Tabelas de dados ( data.frame ) Os data.frames possuem duas dimensões que podem ser encontradas com a função dim , nrow e ncol . Os nomes das linhas e colunas podem ser acessada pelas função rownames e colnames respectivamente. As funções str, head e tail mostram parte do data.frame para que sejá possível conferir os dados sem a nescessidade de visualizar a tabela completa.
  • 59. Data Frames > numeros <- c(2, 5, 6, 78, 2, 233) > letras <- c("a", "b", "c", "d", "e", "f") > names(numeros) <- c("n1", "n2", "n3", "n4", "n5", "n6") dados <- data.frame(valores = numeros, letras, categorias = y) # Combinar vetores em um data.frame. Sempre por colunas > dados valores letras categorias n1 2 a TRUE n2 5 b TRUE n3 6 c TRUE n4 78 d TRUE n5 2 e TRUE n6 233 f TRUE
  • 61. Data frames O objeto mais importante para o cientista de dados é, claro, a base de dados. No R, uma base de dados é representa por objetos chamados de data frames Eles são equivalentes a uma tabela do SQL ou uma planilha do Excel. A principal característica de um data frame é possuir linhas e colunas: mtcars ## mpg cyl disp hp drat wt qsec vs am gear carb ## Mazda RX4 21.0 6 160.0 110 3.90 2.620 16.46 0 1 4 4 ## Mazda RX4 Wag 21.0 6 160.0 110 3.90 2.875 17.02 0 1 4 4 ## Datsun 710 22.8 4 108.0 93 3.85 2.320 18.61 1 1 4 1 ## Hornet 4 Drive 21.4 6 258.0 110 3.08 3.215 19.44 1 0 3 1 ## Hornet Sportabout 18.7 8 360.0 175 3.15 3.440 17.02 0 0 3 2 ## Valiant 18.1 6 225.0 105 2.76 3.460 20.22 1 0 3 1 ## Duster 360 14.3 8 360.0 245 3.21 3.570 15.84 0 0 3 4 ## Merc 240D 24.4 4 146.7 62 3.69 3.190 20.00 1 0 4 2
  • 62. mtcars O mtcars é um data frame nativo do R que contém informações sobre diversos modelos de carros. Ele possui 32 linhas e 11 colunas (só estamos vendo as primeiras 10 linhas no slide anterior). A primeira "coluna" representa apenas o nome das linhas (modelo do carro), não é uma coluna da base. Repare que ela não possui um nome, como as outras. Essa estrutura de nome de linha é própria de data frames no R. Se exportássemos essa base para o Excel, por exemplo, essa coluna não apareceria. Se você quiser saber mais sobre o mtcars , veja a documentação dele rodando ? mtcars no Console.
  • 63. Pertence Um outro operador muito útil é o  %in% . Com ele, podemos verificar se um valor está dentro de um conjunto de valores (vetor). 3 %in% c(1, 2, 3) ## [1] TRUE "a" %in% c("b", "c") ## [1] FALSE
  • 64. Filtros Os testes lógicos fazem parte de uma operação muito comum na manipulação de base de dados: os filtros. No Excel, por exemplo, quando você filtra uma planilha, o que está sendo feito por trás é um teste lógico. Falamos anteriormente que cada coluna das nossas bases de dados será representada dentro do R como um vetor. O comportamento que explica a importância dos testes lógicos na hora de filtrar uma base está ilustrado abaixo: minha_coluna <- c(1, 3, 0, 10, -1, 5, 20) minha_coluna > 3 ## [1] FALSE FALSE FALSE TRUE FALSE TRUE TRUE minha_coluna[minha_coluna > 3] ## [1] 10 5 20
  • 65. Mais sobre data frames Chegou a hora de usarmos tudo o que aprendemos na seção anterior para exploramos ao máximo o nosso objeto favorito: o data frame. Para isso, continuaremos a usar o  mtcars . mtcars ## mpg cyl disp hp drat wt qsec vs am gear carb ## Mazda RX4 21.0 6 160.0 110 3.90 2.620 16.46 0 1 4 4 ## Mazda RX4 Wag 21.0 6 160.0 110 3.90 2.875 17.02 0 1 4 4 ## Datsun 710 22.8 4 108.0 93 3.85 2.320 18.61 1 1 4 1 ## Hornet 4 Drive 21.4 6 258.0 110 3.08 3.215 19.44 1 0 3 1 ## Hornet Sportabout 18.7 8 360.0 175 3.15 3.440 17.02 0 0 3 2 ## Valiant 18.1 6 225.0 105 2.76 3.460 20.22 1 0 3 1 ## Duster 360 14.3 8 360.0 245 3.21 3.570 15.84 0 0 3 4 ## Merc 240D 24.4 4 146.7 62 3.69 3.190 20.00 1 0 4 2 ## Merc 230 22.8 4 140.8 95 3.92 3.150 22.90 1 0 4 2 ## Merc 280 19.2 6 167.6 123 3.92 3.440 18.30 1 0 4 4
  • 66. Acessando as colunas Lembrando que cada coluna de um data frame é um vetor, podemos usar o operador $ para acessar cada uma de suas colunas. mtcars$mpg ## [1] 21.0 21.0 22.8 21.4 18.7 18.1 14.3 24.4 22.8 19.2 17.8 16.4 17.3 15.2 ## [15] 10.4 10.4 14.7 32.4 30.4 33.9 21.5 15.5 15.2 13.3 19.2 27.3 26.0 30.4 ## [29] 15.8 19.7 15.0 21.4 mtcars$cyl ## [1] 6 6 4 6 8 6 8 4 4 6 6 8 8 8 8 8 8 4 4 4 4 8 8 8 8 4 4 4 8 6 8 4 mtcars$wt ## [1] 2.620 2.875 2.320 3.215 3.440 3.460 3.570 3.190 3.150 3.440 3.440 ## [12] 4.070 3.730 3.780 5.250 5.424 5.345 2.200 1.615 1.835 2.465 3.520 ## [23] 3.435 3.840 3.845 1.935 2.140 1.513 3.170 2.770 3.570 2.780
  • 67. Dimensões A classe data frame possui uma característica especial: seus objetos possuem duas dimensões. class(mtcars) ## [1] "data.frame" dim(mtcars) ## [1] 32 11 O resultado do código dim(mtcars) nos diz que a primeira dimensão tem comprimento 32 e a segunda dimensão tem comprimento 11. Em outras palavras: a base mtcars tem 32 linhas e 11 colunas.
  • 68. Subsetting Ter duas dimensões significa que devemos usar dois índices para acessar os valores de um data frame (fazer subsetting). Para isso, ainda usamos o colchete, mas agora com dois argumentos: [linha, coluna]. mtcars[2, 3] ## [1] 160 O código acima está nos devolvendo o valor presente na segunda linha da terceira coluna da base mtcars .
  • 69. Também podemos pegar todos as linhas de uma coluna ou todas as colunas de uma linha deixando um dos argumentos vazio: # Todas as linhas da coluna 1 mtcars[,1] ## [1] 21.0 21.0 22.8 21.4 18.7 18.1 14.3 24.4 22.8 19.2 17.8 16.4 17.3 15.2 ## [15] 10.4 10.4 14.7 32.4 30.4 33.9 21.5 15.5 15.2 13.3 19.2 27.3 26.0 30.4 ## [29] 15.8 19.7 15.0 21.4 # Todas as colunas da linha 1 mtcars[1,] ## mpg cyl disp hp drat wt qsec vs am gear carb ## Mazda RX4 21 6 160 110 3.9 2.62 16.46 0 1 4 4
  • 70. Selecionando colunas Podemos usar o subsetting para selecionar colunas: mtcars[, c(1, 2)] ## mpg cyl ## Mazda RX4 21.0 6 ## Mazda RX4 Wag 21.0 6 ## Datsun 710 22.8 4 ## Hornet 4 Drive 21.4 6 ## Hornet Sportabout 18.7 8 ## Valiant 18.1 6 ## Duster 360 14.3 8 ## Merc 240D 24.4 4 ## Merc 230 22.8 4 ## Merc 280 19.2 6
  • 71. mtcars[, c("mpg", "am")] ## mpg am ## Mazda RX4 21.0 1 ## Mazda RX4 Wag 21.0 1 ## Datsun 710 22.8 1 ## Hornet 4 Drive 21.4 0 ## Hornet Sportabout 18.7 0 ## Valiant 18.1 0 ## Duster 360 14.3 0 ## Merc 240D 24.4 0 ## Merc 230 22.8 0 ## Merc 280 19.2 0 Nos dois exemplos, exibimos apenas as 5 primeiras linhas do data frame.
  • 72. Filtrando colunas Também podemos usar o subsetting para filtrar colunas: mtcars$cyl == 4 ## [1] FALSE FALSE TRUE FALSE FALSE FALSE FALSE TRUE TRUE FALSE FALSE ## [12] FALSE FALSE FALSE FALSE FALSE FALSE TRUE TRUE TRUE TRUE FALSE ## [23] FALSE FALSE FALSE TRUE TRUE TRUE FALSE FALSE FALSE TRUE mtcars[mtcars$cyl == 4, ] ## mpg cyl disp hp drat wt qsec vs am gear carb ## Datsun 710 22.8 4 108.0 93 3.85 2.320 18.61 1 1 4 1 ## Merc 240D 24.4 4 146.7 62 3.69 3.190 20.00 1 0 4 2 ## Merc 230 22.8 4 140.8 95 3.92 3.150 22.90 1 0 4 2 ## Fiat 128 32.4 4 78.7 66 4.08 2.200 19.47 1 1 4 1 ## Honda Civic 30.4 4 75.7 52 4.93 1.615 18.52 1 1 4 2 ## Toyota Corolla 33.9 4 71.1 65 4.22 1.835 19.90 1 1 4 1 ## Toyota Corona 21.5 4 120.1 97 3.70 2.465 20.01 1 0 3 1 ## Fiat X1-9 27.3 4 79.0 66 4.08 1.935 18.90 1 1 4 1 ## Porsche 914-2 26.0 4 120.3 91 4.43 2.140 16.70 0 1 5 2 ## Lotus Europa 30.4 4 95.1 113 3.77 1.513 16.90 1 1 5 2 ## Volvo 142E 21.4 4 121.0 109 4.11 2.780 18.60 1 1 4 2
  • 73. O código  mtcars$cyl == 4  nos diz em quais linhas estão os carros com 4 cilindros. Quando usamos o vetor de  TRUE  e  FALSE  resultante dentro do subsetting das linhas em  mtcars[mtcars$cyl == 4, ] , o R nos devolve todos as colunas dos carros com 4 cilindros. A regra é a seguinte: linha com  TRUE  é retornada, linha com  FALSE  não. Outro exemplo: mtcars[mtcars$mpg > 25, ] ## mpg cyl disp hp drat wt qsec vs am gear carb ## Fiat 128 32.4 4 78.7 66 4.08 2.200 19.47 1 1 4 1 ## Honda Civic 30.4 4 75.7 52 4.93 1.615 18.52 1 1 4 2 ## Toyota Corolla 33.9 4 71.1 65 4.22 1.835 19.90 1 1 4 1 ## Fiat X1-9 27.3 4 79.0 66 4.08 1.935 18.90 1 1 4 1 ## Porsche 914-2 26.0 4 120.3 91 4.43 2.140 16.70 0 1 5 2 ## Lotus Europa 30.4 4 95.1 113 3.77 1.513 16.90 1 1 5 2
  • 74. Vocabulário A seguir, apresentamos algumas funções nativas do R úteis para trabalhar com data frames : head()  - Mostra as primeiras 6 linhas. tail()  - Mostra as últimas 6 linhas. dim()  - Número de linhas e de colunas. names()  - Os nomes das colunas (variáveis). str()  - Estrutura do data frame. Mostra, entre outras coisas, as classes de cada coluna. cbind()  - Acopla duas tabelas lado a lado. rbind()  - Empilha duas tabelas.
  • 75. Funções Funções permitem automatizar tarefas comuns de forma mais poderosa do que copiar e colar. O R possui muitas funções já implementadas. Pacotes são coleções de funções, dados e documentação que ampliam as capacidades do R básico. Veremos como instalá-los no final desta atividade! Você pode desenvolver suas próprias funções!
  • 76. Exemplo de funções básicas do R # Combinar elementos - Função c() ano_nascimento_irmaos <- c(1993, 1998, 2001, 2012, 2012) # Podemos fazer operações com o resultado idade_irmaos <- 2020 - ano_nascimento_irmaos idade_irmaos ## [1] 27 22 19 8 8 # Calculando a média - Função mean() media_idade_irmaos <- mean(idade_irmaos) media_idade_irmaos ## [1] 16.8
  • 77. Estrutura de uma função Nome - é como ela fica salva no ambiente, esse nome é importante para usarmos a função. Argumentos - são parâmetros usados internamente pela função. Muitas funções possuem argumentos com valores padrão. Corpo - o código que será executado. O resultado dependerá dos argumentos oferecidos. # para criar uma funcao nome_da_funcao <- function(argumentos){ corpo da função } # para usar essa função nome_da_funcao(argumentos = ...)
  • 78. Um exemplo: Vamos criar uma função que soma dois números. minha_soma <- function(x, y) { soma <- x + y soma # resultado retornado } Essa função tem os seguintes componentes: minha_soma : nome da função x  e  y : argumentos da função soma <- x + y : operação que a função executa soma : valor retornado pela função
  • 79. Então... Após rodarmos o código de criar a função, podemos utilizá-la como qualquer outra função do R. minha_soma(2, 2) ## [1] 4 O objeto soma só existe dentro da função, isto é, além de ele não ser colocado no seu environment, ele só existirá na memória (RAM) enquanto o R estiver executando a função. Depois disso, ele será apagado. O mesmo vale para os argumentos x e y .
  • 80. Valor retornado O valor retornado pela função representa o resultado que receberemos ao utilizá- la. Por padrão, a função retornará sempre a última linha de código que existir dentro dela. No nosso exemplo, a função retorna o valor contido no objeto  soma , pois é isso que fazemos na última linha de código da função. Repare que se atribuirmos o resultado a um objeto, ele não será mostrado no console: resultado <- minha_soma(3, 3) # Para ver o resultado, rodamos o objeto `resultado` resultado ## [1] 6
  • 81. Funções importantes do R base Função O que retorna? sum() Soma mean() Média median() Mediana var() Variância (simples) sd() Desvio Padrão max() Valor máximo min() Valor mínimo round() Valor arredondado
  • 82. O Tidyverse É uma coleção de pacotes R projetados para a ciência de dados. Todos os pacotes compartilham uma mesma filosofia de desenvolvimento, sintaxe e estruturas de dados. https://www.tidyverse.org/ library(tidyverse)
  • 83. Pacotes do Tidyverse ggplot2: cria gráficos dplyr: manipulação de dados tidyr: arrumar os dados readr: leitura dos dados purrr: ferramentas para programação funcional, trabalha com funções e vetores tibble: dataframes modernos, mais simples de manipular magrittr: facilita a escrita e leitura do código stringr: trabalha com strings
  • 84. Importar arquivos Pacote readr: funções para ler arquivos texto read_csv read_csv2 read_delim read_log read_rds Pacote readxl: função para ler arquivo Excel read_excel
  • 85. Importar arquivos: Via código (próximo slide), ou via "Import Dataset" RStudio -> Environment -> Import Dataset From Excel -> arquivos xls From text (readr) -> csv File/URL - Colocar o link da tabela (se estiver online), ou colocar o caminho da tabela no seu projeto Update - Se selecionar URL, após colar a URL clique em UPDATE. O R irá procurar essa tabela, e caso encontre, apresentará uma "amostra" da sua tabela. SEMPRE copie o Code Preview, e guarde no seu código para que você tenha o registro das etapas realizadas (lembre-se da reprodutibilidade).
  • 86. Algumas Operações Dados de exemplo ex1 <- c(4, 8.987, 48.04, 3.22, 43, 2.34) # Números positivos ex1 [1] 4.000 8.987 48.040 3.220 43.000 2.340 ex2 <- c(-12, -8.12, 2100, 7, NA, -57.3) # Números, negativos e faltantes ex2 [1] -12.00 -8.12 2100.00 7.00 NA -57.30 ex3 <- c(8, 9, 1.65, 12.8, 1, 199) # Mais números ex3 [1] 8.00 9.00 1.65 12.80 1.00 199.00 A <- matrix(c(1,2,3, 11,12,13), nrow = 2, ncol = 3) # Matriz, 2x3 A [,1] [,2] [,3] [1,] 1 3 12 [2,] 2 11 13 B <- matrix(c(12,29,10, 18,28,54, 9, 7, 35), nrow = 3, ncol = 3) # Matriz, 3x3 B [,1] [,2] [,3] [1,] 12 18 9 [2,] 29 28 7 [3,] 10 54 35
  • 87. Estatística descritiva mean(ex1) # Média [1] 18.2645 median(ex1) # Mediana [1] 6.4935 var(ex1) # Variância [1] 453.58 sd(ex1) # Desvio padrão [1] 21.29742 cor(ex1, ex3) # Correlação entre ex1 e ex3 [1] -0.415766 cor(ex1, ex3, method = "spearman") # Correlação entre ex1 e ex3 usando Spearman [1] -0.8857143 cov(ex1, ex3) # Covariação entre ex1 e ex3 [1] -697.0587
  • 88. Gerar números e sequências 1:10 # Sequência de 1 a 10 > [1] 1 2 3 4 5 6 7 8 9 10 -9:1 # Sequência de -9 a 1 > [1] -9 -8 -7 -6 -5 -4 -3 -2 -1 0 1 seq(from = 1, to = 10, by = 2) # Sequência regular de 1 a 10 por 2 > [1] 1 3 5 7 9 seq(from = 1, to = 3, length.out = 8) # Sequência regular de 1 a 3, com 8 valores > [1] 1.000000 1.285714 1.571429 1.857143 2.142857 2.428571 2.714286 3.000000 seq_len(12) # Sequência de inteiros de 1 a 12 > [1] 1 2 3 4 5 6 7 8 9 10 11 12 paste("A", 1:6, sep = ".") # Sequência regular de caracteres > [1] "A.1" "A.2" "A.3" "A.4" "A.5" "A.6" rep(3, 6) # Repetir o valor 3 por 6 vezes > [1] 3 3 3 3 3 3 rep(1:4, 3) # Repetir a sequência 1 a 4 por 3 vezes > [1] 1 2 3 4 1 2 3 4 1 2 3 4 rep(1:4, each = 3) # Repetir os valores 1 a 4 por 3 vezes cada > [1] 1 1 1 2 2 2 3 3 3 4 4 4
  • 89. Gerar dados aleatórios e amostragem runif(5, min = 0, max = 10) # Gerar distribuição uniforme, entre 0 e 10... > [1] 6.742459 8.103175 3.738857 1.388355 3.277760 runif(5, min = 0, max = 10) # ... Note que é diferente a cara execução > [1] 7.8895152 3.0344302 1.6837370 4.8089219 0.5780624 rnorm(5, mean = 0, sd = 1) # Gerar distribução normal com média 0 e variância 1 > [1] -0.57249929 -1.73642564 0.59179279 -1.28624999 0.05649468 rpois(5, lambda = 1) # Gerar distribuição de Poisson, com lambda 1 > [1] 3 1 1 1 0 sample(1:10, size = 4) # Amostrar 4 valores da sequência de 1 a 10 sem reposição... > [1] 7 6 5 9 sample(1:10, size = 4, replace = TRUE) # ... Amostrar com reposição > [1] 10 6 10 1 moeda <- c("cara","coroa") # Vetor com resultados de uma moeda moeda > [1] "cara" "coroa" sample(moeda, size = 1) # Amostrar um resultado > [1] "coroa" sample(moeda, size = 3, replace = TRUE) # Amostrar 3 vezes, replace deve ser verdadeiro > [1] "coroa" "cara" "cara"
  • 90. Para conhecer mais sobre estatística em R Siga os links: https://vanderleidebastiani.github.io/tutoriais/Estatistica_Basica_em_R.html https://docs.ufpr.br/~aanjos/CE002A/estdescritiva.pdf https://rpubs.com/EstatBasica http://www.estatisticacomr.uff.br/wp- content/uploads/2018/10/ap_mci2010.pdf http://www.uft.edu.br/engambiental/prof/catalunha/arquivos/r/r_bruno.pdf
  • 91. O pacote readr O pacote  {readr}  do tidyverse é utilizado para importar arquivos de texto, como  .txt  ou  .csv , para o R. library(readr) O  {readr}  transforma arquivos de textos em  tibbles  usando as funções: read_csv() , read_tsv() , read_delim() , read_table() ou read_log()
  • 92. Algumas funções do pacote: read_csv() : para arquivos separados por vírgula. read_tsv() : para arquivos separados por tabulação. read_delim() : para arquivos separados por um delimitador genérico. O argumento  delim=  indica qual caractere separa cada coluna no arquivo de texto. read_table() : para arquivos de texto tabular com colunas separadas por espaço. read_fwf() : para arquivos compactos que devem ter a largura de cada coluna especificada. read_log() : para arquivos padrões de log. Tibbles são data frames com ajustes que as deixam mais amigáveis a nós cientistas de dados. Elas são parte do pacote {tibble}. Assim, para começar a usá-las, instale e carregue o pacote. install.packages("tibble") library(tibble)
  • 93. Lendo arquivos de texto Como exemplo, utilizaremos uma base de filmes do IMDB, gravada em diversos formatos. O download dos arquivos pode ser realizado clicando aqui. Primeiro, vamos ler a base em formato  .csv . imdb_csv <- read_csv(file = "imdb.csv") ## Rows: 11340 Columns: 20 ## ── Column specification ──────────────────────────────────────────────────────── ## Delimiter: "," ## chr (11): id_filme, titulo, data_lancamento, generos, pais, idioma, direcao,... ## dbl (9): ano, duracao, orcamento, receita, receita_eua, nota_imdb, num_aval... ## ## Use `spec()` to retrieve the full column specification for this data. ## Specify the column types or set `show_col_types = FALSE` to quiet this message.
  • 94. Quando vírgulas separam casas decimais No Brasil, as vírgulas são utilizadas para separar as casas decimais dos números, inviabilizando o uso de arquivos  .csv . Nesses casos os arquivos  .csv  passam a ser separados por ponto-e-vírgula. Para importar bases de arquivos separados por ponto-e-vírgula no R, basta usar a função  read_csv2() . imdb_csv2 <- read_csv2("dados/imdb2.csv")
  • 95. Lendo arquivos txt Arquivos  .txt  em geral podem ser lidos com a função  read_delim() . Além do caminho até o arquivo, você também precisa indicar qual é o caractere utilizado para separar as colunas da base. Um arquivo separado por tabulação, por exemplo, pode ser lido utilizando a o código abaixo. O código  t  é uma forma textual de representar a tecla TAB. imdb_txt <- read_delim("dados/imdb.txt", delim = "t")
  • 96. Escrevendo arquivos de texto Para a maioria das funções  read_ , existe uma respectiva função  write_ . Essas funções servem para salvar bases em um formato específico de arquivo. Além do caminho/nome do arquivo a ser criado, você também precisa passar o objeto que será escrito. Para o arquivo criado funcionar corretamente, você precisa especificar a extensão correta no nome do arquivo. # Arquivo .csv write_csv(x = mtcars, path = "data/mtcars.csv") # Base separada por tabulação write_delim(x = mtcars, path = "data/mtcars.txt", delim = "t")
  • 97. Gráficos Para construir um gráfico usa-se função genérica plot . A função plot é uma função que produz gráficos de maneira automática dependendo do tipo de informação e classe do objeto passado para ela. Quando apropriado, os eixos, nomes dos eixos e títulos são gerados automaticamente (a menos se especificado o contrário). Ainda existem várias funções auxiliares para adicionar elementos ao gráfico.
  • 98. Função plot() Dados Dados anscombe é um conjunto de dados didáticos para uso em regressões lineares. O conjunto é formado por 4 pares de variávis independente e dependente totalizando 11 observações > data(anscombe) > dados <- anscombe > str(dados) 'data.frame': 11 obs. of 8 variables: $ x1: num 10 8 13 9 11 14 6 4 12 7 ... $ x2: num 10 8 13 9 11 14 6 4 12 7 ... $ x3: num 10 8 13 9 11 14 6 4 12 7 ... $ x4: num 8 8 8 8 8 8 8 19 8 8 ... $ y1: num 8.04 6.95 7.58 8.81 8.33 ... $ y2: num 9.14 8.14 8.74 8.77 9.26 8.1 6.13 3.1 9.13 7.26 ... $ y3: num 7.46 6.77 12.74 7.11 7.81 ... $ y4: num 6.58 5.76 7.71 8.84 8.47 7.04 5.25 12.5 5.56 7.91 ...
  • 99. Gráfico de pontos Se x e y são dois vetores do tipo numeric o gráfico resultante é de pontos, sendo mostrado x as coordenadas dos pontos no eixo horizontal e y as coordenadas do eixo vertical. > plot(dados$x1, dados$y1) # plot(y1 ~ x1, data=dados) produz o mesmo resultado.
  • 100. Gráfico de séries Se apenas um vetor do tipo numeric é fornecido a função gera uma série com os dados, seguindo a ordem que os valores estão no vetor. > plot(dados$x1)
  • 101. Gáficos de barra Se apenas um vetor do tipo factor é fornecido a função gera um gráfico de barra. plot(as.factor(dados$x1))
  • 102. Função par() Os parâmetros gráficos gerais são predefinidos pela função par Cada parâmetro define uma opção de configuração do gráfico
  • 103. Alterando eixos Uma das opções mais utilizada na elaboração de gráficos se refere as alterações dos aspectos relacionados aos eixos. Argumentos: xlab e ylab - Alterar nomes dos eixos x e y respectivamente. Podem ser usados junto com font.lab para alterar o tipo de fonte, col.lab para alterar cor e cex.lab para alterar o tamanho da fonte. main - Alterar nomes do título do gráfico. Pode ser usado junto com font.main, col.main e cex.main, para alterar fonte, cor e tamanho do título respectivamente.
  • 104. Exemplo: plot(dados$x1, dados$y1, xlab = "Variável preditora", ylab = "Variável resposta", main = "Anscombe")
  • 105. Alguns exemplos de tipos de gráficos gerados em R Para verificar siga os links abaixo (e continue verificando as opções): https://vanderleidebastiani.github.io/tutoriais/Graficos_com_R.html#Gr%C3%A 1ficos_personalizados https://livro.curso-r.com/8-graficos.html
  • 106. Exportar resultados Assim como para importar dados, para exportar há muitas funções para exportar dados. Para exportar tabelas completas é possível usar as funções write.table ou write.csv, basta especificar o objeto com a tabela completa e o nome do arquivo de saída. O arquivo será salvo no diretório de trabalho do R. Para exportar os resultados de análises para visualização é melhor usar o Rmarkdown (um texto básico pode ser encontrado em https://vanderleidebastiani.github.io/tutoriais e https://livro.curso-r.com/9- relatorios.html). > write.table(dados, "dados.txt", sep = " ") # Exportar em .txt > write.csv(dados, "dados.csv") # Exportar em .csv
  • 107. Comunicando resultados Sobre detalhes acerca de relatórios e comunicação em R siga os links: https://livro.curso-r.com/9-relatorios.html https://beatrizmilz.github.io/IV-SER-RLadies/#1 https://vanderleidebastiani.github.io/tutoriais/Documentacao_de_resultados_u sando_R_Markdown.html https://beatrizmilz.github.io/aMostra-IME-2019-Xaringan/#11 https://beatrizmilz.github.io/slidesR/rmarkdown/rmarkdown_packages.html#1 https://r-ladies-sao-paulo.github.io/xaringan/slides.html#6
  • 108. Prática (Estudos de caso) Para seguir um tutorial de uma análise de dados em R, siga o link: https://beatrizmilz.github.io/Oficina_intro_R_UFABC_2018/#64 E continue a apresentação até o fim (há mais 2 estudos de caso nesta apresentação)
  • 109. Onde estudar mais? Repositório de materias de estudo com R Curso R Curso-R - Cursos presenciais sobre R. Material Curso-R - Material disponibilizado pela Curso-R para estudo. Blog Curso-R - Blog do Curso-R com diversos conteúdos interessantes. Datacamp: Introdução ao R/Introduction to R - Conteúdo: introdução, tipos de dados no R: vetores, matrizes, fatores, data frames, listas.
  • 110. Livros Hands-On Programming with R - Livro em inglês, disponibilizado gratuitamente online. Conteúdo: básico do R e RStudio, Pacotes, objetos, tipos de dados, funções, etc. R for Data Science - Livro em inglês, disponibilizado gratuitamente online. Conteúdo muito bom sobre R. R Cookbook Ciência de Dados com R - Instituto Brasileiro de Pesquisa e Análise de Dados Biblioteca do R-Project, livros em diversas línguas: https://www.r- project.org/doc/bib/R-books.html
  • 111. Cheatsheets Ambiente de desenvolvimento RSTUDIO: Português, Inglês Importar dados/Data import - Inglês Visualização de dados - Português Manipular dados - Português Data transformation - Inglês Trabalhar com textos/ String manipulation - Inglês Comunicar seus resultados - RMarkdown - Inglês Criar gráficos com Ggplot2 - Inglês LaTeX - Inglês Expressões regulares - Inglês Pode conferir também outras cheatsheets em inglês no site: RStudio Cheatsheets - RStudio
  • 112. Obrigado Edkallenn Lima Mestre em Ciência da Computação, Agente de Polícia Federal e professor