SlideShare uma empresa Scribd logo
1 de 41
Baixar para ler offline
Aprendendo R
Mauricio Purificação
Sponsors
Grupos Locais
SQL Saturday – 2018 [Previstos]
Mês Local
Abril Joinville
Maio Belo Horizonte
Junho Caxias do Sul
Agosto Brasilia
Os sorteios vão ser realizados no final do evento.
Mauricio Purificação
Líder de BI – Cárdio Pulmonar da Bahia
Nas Horas Não Vagas (Incluindo Finais de
Semana)  
• Consultor de Business Intelligence (BI),
Data Discovery e Business Analytics
• Líder Técnico do Projeto de BI do
Hospital Cárdio Pulmonar da Bahia
• Empreendedor e Startupeiro
• Quem Sabe Um Dia Blogueiro e
Youtuber 
Nas Horas Vagas e Quando Eu Deveria
Dormir!  
• Mestrando em Engenharia de Sistemas
e Produtos – IFBA
• MBA em Administração/Gestão de
Negócios - Universidade Salvador
(UNIFACS)
• Bacharel em Ciência da Computação -
Universidade Federal da Bahia (UFBA)
mauricio.purificacao /mauricio-cesar-santos-da-purificação-17921127
Um Pouco Sobre R: O Que É?
• O R não é um "aplicativo" que lhe possibilita através de uma interface gráfica
amigável realizar algumas tarefas sem saber exatamente o que está fazendo;
• O R é um ambiente de trabalho para realização de análises estatísticas;
• Do ponto de vista da análise de dados, o R tem uma filosofia que o diferencia
radicalmente dos outros softwares estatísticos;
• ANALISAR DADOS É PROGRAMAR COM DADOS: toda a análise de dados deve
ser pensada como a construção de um programa que ao ser executado gera
a análise esperada.
Um Pouco Sobre R: História
• Desenvolvido originalmente por Ross Ihaka e Robert Gentleman
(Depto Estatística da Universidade de Auckland, Nova Zelândia);
• Inspirado em duas linguagens:
• S (John Chambers e colegas – Bell Labs): sintaxe
• Scheme (Hal Abelson and Gerald Sussman): implementação e semântica
• R está disponível como um software livre, nos termos da GNU GPL
(General Public License).
• Windows, Linux, OS X (Mac)
Um Pouco Sobre R: História
• 1980: Linguagem S: desenvolvida por R. Becker, J. Chambers e A.
Wilks (AT&T Bell Laboratories)
• 1980: Versão comercial: S-Plus (Insightful Corporation)
• 1996: Versão livre: R desenvolvido por R. Ihaka e R. Gentleman
(Universidade de Auckland)
• 1997: R Development Core Team
• Hoje: 20 desenvolvedores principais e muitos outros colaboradores
em todo o mundo
• Estatísticos, matemáticos e programadores
Um Pouco Sobre R: Características
• INTERFACE: o R é uma interface para análises de dados, criando um
ambiente de trabalho;
• INTERATIVIDADE: essa interface é interativa, isto é, você digita
comandos e obtêm os resultados;
• MODULAR: o R é composto por módulos, que são chamados de
pacotes (packages). O pacote básico traz a funcionalidade necessária
para as análises matemáticas e estatísticas mais usuais. Existem
literalmente milhares de outros pacotes para realizar análises
específicas nas mais diversas áreas do conhecimento científico.
Um Pouco Sobre R: Características
• FUNCIONAL: a linguagem S, a linguagem que se fala dentro do R, é
uma linguagem funcional, isto é, todas as análises e ações são
realizadas por funções;
• ORIENTAÇÃO PARA OBJETOS: a linguagem S é uma linguagem de
programação orientada para objetos, isto é, todas as entidades no
ambiente R (dados, análises, gráficos, funções) são efetivamente
objetos;
• COLABORATIVO: o R é um esforço mundial de programação em
código aberto.
Vantagens & Desvantagens
Vantagens Desvantagens
Rápido e gratuito Curva de aprendizagem significativa
Pesquisadores de Estatística fornecem os
seus métodos em pacotes de R
Não há suporte comercial
Nos gráficos perde apenas para o Matlab
Trabalhando com grandes conjuntos de
dados é limitada pela RAM
Comunidade de usuários ativos
Fácil cometer erros se não conhecer bem a
linguagem
Excelente para a simulação, programação,
análises intensivas de computador, etc.
Preparação e limpeza de dados pode ser
mais confusa e mais propenso erro em R que
em soluções proprietárias como SPSS ou SAS
Interfaces com software de armazenamento
de banco de dados (SQL)
Descobrir que métodos utilizar ou como usar
uma função pode ser frustrante.
Pipeline de Analytics
• Importação de arquivos (readr, readxl, haven, data.table)
• Limpeza e tratamento de dados (dplyr, data.table, tidyr, stringr)
• Gráficos (ggplot2, dygraphs, plotly)
• Interface com bancos de dados (RPostgreSQL, RMySQL, RODBC)
• Análise preditiva / Data Science (caret, forecast, rpart, e1071, knn,
• randomForest)
• Relatório analítico final (rmarkdown, knitr)
• Dashboards interativos (shiny, shinydashboard)
Noções de Programação
• parênteses "()": são utilizados para toda e qualquer função. P. ex.
função(argumento)
• atribuição "<-": são utilizados para nomear objetos. P. ex. nome do
objeto <- função(argumento)
• chaves "{}": são utilizados para construir novas funções. P. ex.
função(argumento){
comandos
resultados }
• aspas "" são utilizadas para denominar caracteres. P. ex. "Oi, meu
nome é John Snow"
Nomes de Variáveis
• O R é case sensitive – isto é, letras maiúsculas e minúsculas são
diferenciadas – portanto x1 (com x minúsculo) e X1 (com x maiúsculo)
são objetos diferentes;
• Os nomes dos objetos no R podem conter combinações arbitrárias de
números, textos, bem como ponto ( . ) e underscore ( _ ). Entretanto,
os nomes não podem começar com números ou underscore.
Pedindo Ajuda?
• help.start()
• apropos("sear")
• help("print")
• ?print, ??print
• help.search("regression")
• help.search("linear regression")
• args("sd")
• sd
Alterando Diretório de Trabalho
• getwd()
• setwd("C:UsersMauricioDocumentsWorkR")
• setwd(choose.dir())
• dir()
• list.files()
Gerenciando o Workspace
• ls()
• objects()
• object.size(objeto)
• rm(objeto)
• lista_obj <- ls()
• rm(list=lista_obj)
• rm(list = ls())
• ls(pattern="y")
• rm(list=ls(pattern="y"))
Salvando o Workspace
• # grava o seu workspace com o nome genérico: ".RData"
• save.image()
• # grava o seu workspace com o nome indicado
• save.image(file="minha_sessao_inicial_de_R.RData")
• load(file=" minha_sessao_inicial_de_R.RData ")
• save(objeto, file="objeto.RData")
• q()
Instalando e Ativando Pacotes
• install.packages("nomedopacote")
• install.packages("nomedopacote", dependencies = TRUE)
• library()
• library(nomedopacote)
• search()
• getOption("defaultPackages")
• detach(package:nomedopacote)
• remove.packages(nomedopacote)
Lendo Arquivos
• dados<-read.table(file.choose(), header=T)
• dados <- read.table("arquivo.csv", header = TRUE, sep = ";", dec = ",")
• dados2 <- read.csv2("arquivo.csv", stringsAsFactors = FALSE)
• library(gdata)
• dados.xls <- read.xls("arquivo.xls", sheet = "Plan1", header = TRUE, dec = ",")
• str(), head(), tail()
• attach(), detach()
Criando Sequências
• 1:10
• (1:10) * 10
• seq(from=0, to=100, by=10)
• seq(from=0, to=100, len=10)
• seq(from = 1, to = 10, length.out = 15)
• rep("A", times=10)
• rep(c("A", "B", "C"), times=10)
• rep(c("A", "B", "C"), each=10)
• seqABC <- rep(c("A", "B", "C"), times=c(2,3,5))
• runif(10, 1, 100)
Trabalhando com Datas
• copa.70 <- "21/06/70"
• copa.94 <- "17/07/94"
• copa.94 - copa.70
• class(copa.70); class(copa.94)
• copa.70 <- as.Date(copa.70,format="%d/%m/%y")
• copa.94 <- as.Date(copa.94,format="%d/%m/%y")
• class(copa.70); class(copa.94)
• copa.94 - copa.70
Conversão de Tipos
• class(objeto)
• typeof(objeto)
• is.integer(objeto)
• is.double(objeto)
• is.numeric(objeto)
• is.character(objeto)
• is.logical(objeto)
• as.character(objeto)
• as.numeric(objeto)
Tipos de Objetos
• vector: o mais elementar e um dos mais importantes;
• matrix e array: generalizações multi-dimensionais de vetores;
• factor: forma compacta para manipulação de dados categóricos;
• list: forma geral de vetores, nos quais os elementos não precisam ser do mesmo tipo
básico. Útil p.ex. para retorno de funções, quando diversos objetos necessitam ser
devolvidas;
• data frames: são estruturas na forma de matrizes, em que as colunas podem ser de
diferentes tipos básicos;
• funções: maneira simples e conveniente de estender as funcionalidades do R.
Criação de Objetos
• a = 1:5
• b = factor(rep(c("a","b","c"), each=3))
• c = data.frame(sec=c("XIX", "XX", "XXI"), inicio=c(1801,1901,2001))
• d = matrix(round(runif(40,0,100)), ncol=8)
• e = array(1:12, c(3,2,2))
• minha.lista = list(um.vetor = a, um.fator = b, um.data.frame = c, uma.matriz = d)
• str(minha.lista); str(minha.lista$um.data.frame); str(d)
• length(b); length(minha.lista); dim(minha.lista$um.data.frame); nrow(e); ncol(e)
Indexando e Acessando Itens
• O operador [ ] sempre retorna um objeto da mesma classe que o original. Pode ser
usado para selecionar múltiplos elementos de um objeto
• O operador [[ ]] é usado para extrair elementos de uma lista ou data frame. Pode ser
usado para extrair um único elemento, e a classe do objeto retornado não precisa
necessariamente ser uma lista ou data frame.
• O operador $ é usado para extrair elementos nomeados de uma lista ou data frame. É
similar ao operador [[ ]].
Indexando e Acessando Itens (Vetores)
• cont <- c(8, 4, NA, 9, 6, 1, 7, 9)
• cont[4]
• cont[c(1, 4, 8)], cont[-c(1, 4, 8)]
• cont[1:5]
• cont[seq(1, 8, by = 2)]
• cont[is.na(cont)], cont[!is.na(cont)]
• cont[is.na(cont)] <- 0, is.na(cont) <- 3
• names(cont) <- letters[1:length(cont)]
• cont["d"]
• cont[c("f", "a")]
Indexando e Acessando Itens (Matrizes)
• mat <- matrix(1:9, nrow = 3)
• mat[2,3]
• mat[, 1], mat[1, ]
• mat[3, 2, drop = FALSE]
• mat[1, , drop = FALSE]
• mat[c(1, 3), c(2, 3)]
• colnames(mat) <- LETTERS[1:3]
• mat[, "B"], mat[1, "C"]
• rownames(mat) <- LETTERS[24:26]
• mat["X", ], mat["Y", "A"]
Indexando e Acessando Itens (Listas)
• lis <- list(c(3, 8, 7, 4), mat, 5:0)
• lis[[2]]
• lis[[1]][3]
• lis[[2]][2, 3]
• lis <- list(vetor1 = c(3, 8, 7, 4), mat = mat, vetor2 = 5:0) #names(lis) <- c("vetor1", "mat", "vetor2")
• lis$mat
• lis$mat[2, 3]
• lis$vetor1[3]
• lis[["mat"]]
• lis[["vetor1"]][3]
Indexando e Acessando Itens (Data Frames)
• da <- data.frame(A = 4:1, B = c(2, NA, 5, 8))
• da[2, 1]
• da[, 2]
• da[,"B"]
• da[1, ]
• da["1", ]
• da$A
• da$B[3]
• da$B[c(2, 4)]
• da[is.na(da$A), ], da[is.na(da$B), ], da[!is.na(da$B), ]
• with(da, A), with(da, B[3])
Seleção Condicional
• dados <- c(5, 15, 42, 28, 79, 4, 7, 14)
• dados[dados > 15], dados[dados > 15 & dados <= 35]
• dados > 15 & dados <= 35, dados > 15 | dados <= 35
• cara <- letters[1:length(dados)]
• dados[cara == "c"], dados[cara %in% c("a", "c")]
• cara[dados == 15], cara[dados > 30]
• cara[dados %in% c(4, 14)]
• which(dados > 15), which(dados > 15 & dados <= 35), which(cara == "c")
• which(cara %in% c("a", "c"))
Seleção Condicional
• dados <- data.frame(ano = c(2001, 2002, 2003, 2004, 2005),
captura = c(26, 18, 25, 32, NA),
porto = c("SP", "RS", "SC", "SC", "RN"))
• dados[dados$ano == 2004, ]
• dados[dados$porto == "SC", ]
• dados[dados$captura > 20, "captura"]
• dados[dados$captura > 25 & dados$porto == "SP", ]
• subset(dados, porto == "SC")
• subset(dados, captura > 20)
• subset(dados, captura > 20, select = captura)
R como Calculadora
R como Calculadora
Operadores Lógicos
Estatística Descritiva
• summary(dados)
• table()
Estatística Descritiva
Estatística Descritiva Nome da Função
Média mean
Mediana median
Mínimo min
Máximo max
Amplitude de variação range
Quartis e quantis quantile
Distância Interquartil (Inter Quarter Range) IQR
Variância var
Desvio padrão (Standard Deviation) sd
Desvio abosluto mediano (Mean Absolut Deviation) mad
Link’s Úteis
• Página do Projeto está disponível em http://www.r-project.org/;
• Página de download está disponível em http://cran.r-project.org;
• Página do RStudio: http://www.rstudio.com/;
• Página do Tinn-R: http://nbcgib.uesc.br/lec/software/desenvolvidos/editores/tinn-r/en;
• Tutoriais estão disponíveis em http://cran.r-project.org/other-docs.html;
• Grupos de discussão são encontrados em http://wiki.r-project.org/rwiki/doku.php;
• Novidades são disponíveis em http://cran.r-project.org/doc/Rnews/;
• R site search: http://finzi.psych.upenn.edu/search.html;
• CRAN Task Views: http://cran.r-project.org/web/views/;
• Cartão de referência preparado por Jonathan Baron:
http://www.leg.ufpr.br/~paulojus/misc/refcard.pdf.
Os 10 Mandamentos do R
0º - Não entrarás em pânico!
1º - Utilizarás o R para tuas análises bem como para a manipulação de teus dados(não mais o
Excel);
2º - Nunca digitarás o código no console;
3º - Salvarás seus scripts e não se preocuparás com o .RData;
4º - Sempre concatenarás;
5º - Jamais esquecerás dos parênteses das funções;
6º - Conferirás o diretório de trabalho e os dados após a importação, antes de enlouqueceres;
7º - Usarás o help antes de perguntares e não culparás o R por teus erros;
8º - Não esmorecerás após as primeiras noites em claRo e jamais amaldiçoarás o R por tuas faltas
de vírgulas;
9º - Lembrarás das aspas dos caracteres;
10º- Não cobiçarás e aperfeiçoarás os códigos alheios e nunca ocultarás o código e a autoria
original;
OBRIGADO

Mais conteúdo relacionado

Semelhante a Aprendendo R - Introdução à linguagem e conceitos básicos

Cartilha de R para Estatística e Data Science.pdf
Cartilha de R para Estatística e Data Science.pdfCartilha de R para Estatística e Data Science.pdf
Cartilha de R para Estatística e Data Science.pdfEdkallenn Lima
 
Tecnologias para mineração de dados nas nuvens
Tecnologias para mineração de dados nas nuvensTecnologias para mineração de dados nas nuvens
Tecnologias para mineração de dados nas nuvensAlessandro Binhara
 
01 banco de dados-basico
01 banco de dados-basico01 banco de dados-basico
01 banco de dados-basicoAmadeo Santos
 
TDC Conn 2022_ O Esqueleto de um Projeto de Dados (2).pdf
TDC Conn 2022_ O Esqueleto de um Projeto de Dados (2).pdfTDC Conn 2022_ O Esqueleto de um Projeto de Dados (2).pdf
TDC Conn 2022_ O Esqueleto de um Projeto de Dados (2).pdfFernandoIto8
 
Projeto de Sistemas - Aula004
Projeto de Sistemas - Aula004Projeto de Sistemas - Aula004
Projeto de Sistemas - Aula004Cláudio Amaral
 
364722271-Modulo-III-Linguagem-SQL-Versao-Final.pdf
364722271-Modulo-III-Linguagem-SQL-Versao-Final.pdf364722271-Modulo-III-Linguagem-SQL-Versao-Final.pdf
364722271-Modulo-III-Linguagem-SQL-Versao-Final.pdfQuitriaSilva550
 
Big data para programadores convencionais
Big data para programadores convencionaisBig data para programadores convencionais
Big data para programadores convencionaisRoberto Oliveira
 
Mapeamento Objeto Relacional em PHP com Outlet ORM
Mapeamento Objeto Relacional em PHP com Outlet ORMMapeamento Objeto Relacional em PHP com Outlet ORM
Mapeamento Objeto Relacional em PHP com Outlet ORMFábio Rehm
 
Pré-processamento [no R] e Análise Exploratória - Curso de Big Data
Pré-processamento [no R] e Análise Exploratória - Curso de Big DataPré-processamento [no R] e Análise Exploratória - Curso de Big Data
Pré-processamento [no R] e Análise Exploratória - Curso de Big DataFabrício Barth
 
PostgreSQL-Prático.pdf
PostgreSQL-Prático.pdfPostgreSQL-Prático.pdf
PostgreSQL-Prático.pdfArleiEvaristo
 
Desenvolvendo Aplicações baseadas em Big Data com PySpark
Desenvolvendo Aplicações baseadas em Big Data com PySparkDesenvolvendo Aplicações baseadas em Big Data com PySpark
Desenvolvendo Aplicações baseadas em Big Data com PySparkVinícius Barros
 
Data warehousing
Data warehousingData warehousing
Data warehousingacistec
 
Estripando o Elefante - (Trabalhando com extensões no PostgreSQL)
Estripando o Elefante - (Trabalhando com extensões no PostgreSQL)Estripando o Elefante - (Trabalhando com extensões no PostgreSQL)
Estripando o Elefante - (Trabalhando com extensões no PostgreSQL)Dickson S. Guedes
 
Minicurso PostgreSQl
Minicurso PostgreSQlMinicurso PostgreSQl
Minicurso PostgreSQlCezar Souza
 

Semelhante a Aprendendo R - Introdução à linguagem e conceitos básicos (20)

Sql
SqlSql
Sql
 
Cartilha de R para Estatística e Data Science.pdf
Cartilha de R para Estatística e Data Science.pdfCartilha de R para Estatística e Data Science.pdf
Cartilha de R para Estatística e Data Science.pdf
 
Tecnologias para mineração de dados nas nuvens
Tecnologias para mineração de dados nas nuvensTecnologias para mineração de dados nas nuvens
Tecnologias para mineração de dados nas nuvens
 
01 banco de dados-basico
01 banco de dados-basico01 banco de dados-basico
01 banco de dados-basico
 
TDC Conn 2022_ O Esqueleto de um Projeto de Dados (2).pdf
TDC Conn 2022_ O Esqueleto de um Projeto de Dados (2).pdfTDC Conn 2022_ O Esqueleto de um Projeto de Dados (2).pdf
TDC Conn 2022_ O Esqueleto de um Projeto de Dados (2).pdf
 
AulaAula1(introducao)
AulaAula1(introducao)AulaAula1(introducao)
AulaAula1(introducao)
 
Projeto de Sistemas - Aula004
Projeto de Sistemas - Aula004Projeto de Sistemas - Aula004
Projeto de Sistemas - Aula004
 
364722271-Modulo-III-Linguagem-SQL-Versao-Final.pdf
364722271-Modulo-III-Linguagem-SQL-Versao-Final.pdf364722271-Modulo-III-Linguagem-SQL-Versao-Final.pdf
364722271-Modulo-III-Linguagem-SQL-Versao-Final.pdf
 
Aula 01 Revisão
Aula 01   RevisãoAula 01   Revisão
Aula 01 Revisão
 
Aplicativo aula02
Aplicativo aula02Aplicativo aula02
Aplicativo aula02
 
Big data para programadores convencionais
Big data para programadores convencionaisBig data para programadores convencionais
Big data para programadores convencionais
 
Mapeamento Objeto Relacional em PHP com Outlet ORM
Mapeamento Objeto Relacional em PHP com Outlet ORMMapeamento Objeto Relacional em PHP com Outlet ORM
Mapeamento Objeto Relacional em PHP com Outlet ORM
 
Pré-processamento [no R] e Análise Exploratória - Curso de Big Data
Pré-processamento [no R] e Análise Exploratória - Curso de Big DataPré-processamento [no R] e Análise Exploratória - Curso de Big Data
Pré-processamento [no R] e Análise Exploratória - Curso de Big Data
 
PostgreSQL-Prático.pdf
PostgreSQL-Prático.pdfPostgreSQL-Prático.pdf
PostgreSQL-Prático.pdf
 
Desenvolvendo Aplicações baseadas em Big Data com PySpark
Desenvolvendo Aplicações baseadas em Big Data com PySparkDesenvolvendo Aplicações baseadas em Big Data com PySpark
Desenvolvendo Aplicações baseadas em Big Data com PySpark
 
SQL Oracle
SQL OracleSQL Oracle
SQL Oracle
 
Data warehousing
Data warehousingData warehousing
Data warehousing
 
Banco de dados aula 2
Banco de dados  aula 2Banco de dados  aula 2
Banco de dados aula 2
 
Estripando o Elefante - (Trabalhando com extensões no PostgreSQL)
Estripando o Elefante - (Trabalhando com extensões no PostgreSQL)Estripando o Elefante - (Trabalhando com extensões no PostgreSQL)
Estripando o Elefante - (Trabalhando com extensões no PostgreSQL)
 
Minicurso PostgreSQl
Minicurso PostgreSQlMinicurso PostgreSQl
Minicurso PostgreSQl
 

Mais de Mauricio Cesar Santos da Purificação

Intelligence, Discovery, Analytics e Data Science: Evolução, Desafios e Oport...
Intelligence, Discovery, Analytics e Data Science: Evolução, Desafios e Oport...Intelligence, Discovery, Analytics e Data Science: Evolução, Desafios e Oport...
Intelligence, Discovery, Analytics e Data Science: Evolução, Desafios e Oport...Mauricio Cesar Santos da Purificação
 
Intelligence, Discovery, Science e Analytics: Transformando Dados em Ouro
Intelligence, Discovery, Science e Analytics: Transformando Dados em OuroIntelligence, Discovery, Science e Analytics: Transformando Dados em Ouro
Intelligence, Discovery, Science e Analytics: Transformando Dados em OuroMauricio Cesar Santos da Purificação
 
Big Data Analytics e Social Mining - Inteligência Em Uma Montanha de Dados?
Big Data Analytics e Social Mining - Inteligência Em Uma Montanha de Dados?Big Data Analytics e Social Mining - Inteligência Em Uma Montanha de Dados?
Big Data Analytics e Social Mining - Inteligência Em Uma Montanha de Dados?Mauricio Cesar Santos da Purificação
 

Mais de Mauricio Cesar Santos da Purificação (20)

Intelligence, Discovery, Analytics e Data Science: Evolução, Desafios e Oport...
Intelligence, Discovery, Analytics e Data Science: Evolução, Desafios e Oport...Intelligence, Discovery, Analytics e Data Science: Evolução, Desafios e Oport...
Intelligence, Discovery, Analytics e Data Science: Evolução, Desafios e Oport...
 
Intelligence, Discovery, Science e Analytics: Transformando Dados em Ouro
Intelligence, Discovery, Science e Analytics: Transformando Dados em OuroIntelligence, Discovery, Science e Analytics: Transformando Dados em Ouro
Intelligence, Discovery, Science e Analytics: Transformando Dados em Ouro
 
Pitch AcheSeuEstúdio - Campus Party
Pitch AcheSeuEstúdio - Campus PartyPitch AcheSeuEstúdio - Campus Party
Pitch AcheSeuEstúdio - Campus Party
 
Pitch BestPoint - Campus Party
Pitch BestPoint - Campus PartyPitch BestPoint - Campus Party
Pitch BestPoint - Campus Party
 
Big Data Analytics
Big Data AnalyticsBig Data Analytics
Big Data Analytics
 
Flyer BestPoint
Flyer BestPointFlyer BestPoint
Flyer BestPoint
 
Pitch BestPoint
Pitch BestPointPitch BestPoint
Pitch BestPoint
 
Será Mesmo o Cientista de Dados a Profissão do Futuro?
Será Mesmo o Cientista de Dados a Profissão do Futuro?Será Mesmo o Cientista de Dados a Profissão do Futuro?
Será Mesmo o Cientista de Dados a Profissão do Futuro?
 
OxenTI - Desenvolvimento de Soluções Inovadoras em TI
OxenTI - Desenvolvimento de Soluções Inovadoras em TIOxenTI - Desenvolvimento de Soluções Inovadoras em TI
OxenTI - Desenvolvimento de Soluções Inovadoras em TI
 
Pitch BestPoint - DemoDay StartupSummer 2015
Pitch BestPoint - DemoDay StartupSummer 2015Pitch BestPoint - DemoDay StartupSummer 2015
Pitch BestPoint - DemoDay StartupSummer 2015
 
BestPoint
BestPointBestPoint
BestPoint
 
Big Data Analytics e Social Mining - Inteligência Em Uma Montanha de Dados?
Big Data Analytics e Social Mining - Inteligência Em Uma Montanha de Dados?Big Data Analytics e Social Mining - Inteligência Em Uma Montanha de Dados?
Big Data Analytics e Social Mining - Inteligência Em Uma Montanha de Dados?
 
Será Mesmo o Cientista de Dados a Profissão do Futuro?
Será Mesmo o Cientista de Dados a Profissão do Futuro?Será Mesmo o Cientista de Dados a Profissão do Futuro?
Será Mesmo o Cientista de Dados a Profissão do Futuro?
 
QlikView In Action - Do BI ao Business Discovery!…
QlikView In Action - Do BI ao Business Discovery!…QlikView In Action - Do BI ao Business Discovery!…
QlikView In Action - Do BI ao Business Discovery!…
 
Dê Adeus ao BI e Seja Bem Vindo à Era do Analytics...
Dê Adeus ao BI e Seja Bem Vindo à Era do Analytics...Dê Adeus ao BI e Seja Bem Vindo à Era do Analytics...
Dê Adeus ao BI e Seja Bem Vindo à Era do Analytics...
 
Adeus BI, Seja Bem Vindo a Era do Analytics?
Adeus BI, Seja Bem Vindo a Era do Analytics?Adeus BI, Seja Bem Vindo a Era do Analytics?
Adeus BI, Seja Bem Vindo a Era do Analytics?
 
Derivação de Modelos ER
Derivação de Modelos ERDerivação de Modelos ER
Derivação de Modelos ER
 
Business Intelligence - Prática e Experiências
Business Intelligence - Prática e ExperiênciasBusiness Intelligence - Prática e Experiências
Business Intelligence - Prática e Experiências
 
Inteligência de Negócios e Software Livre
Inteligência de Negócios e Software LivreInteligência de Negócios e Software Livre
Inteligência de Negócios e Software Livre
 
Business Intelligence & Business Analytics
Business Intelligence & Business AnalyticsBusiness Intelligence & Business Analytics
Business Intelligence & Business Analytics
 

Aprendendo R - Introdução à linguagem e conceitos básicos

  • 4. SQL Saturday – 2018 [Previstos] Mês Local Abril Joinville Maio Belo Horizonte Junho Caxias do Sul Agosto Brasilia
  • 5. Os sorteios vão ser realizados no final do evento.
  • 6. Mauricio Purificação Líder de BI – Cárdio Pulmonar da Bahia Nas Horas Não Vagas (Incluindo Finais de Semana)   • Consultor de Business Intelligence (BI), Data Discovery e Business Analytics • Líder Técnico do Projeto de BI do Hospital Cárdio Pulmonar da Bahia • Empreendedor e Startupeiro • Quem Sabe Um Dia Blogueiro e Youtuber  Nas Horas Vagas e Quando Eu Deveria Dormir!   • Mestrando em Engenharia de Sistemas e Produtos – IFBA • MBA em Administração/Gestão de Negócios - Universidade Salvador (UNIFACS) • Bacharel em Ciência da Computação - Universidade Federal da Bahia (UFBA) mauricio.purificacao /mauricio-cesar-santos-da-purificação-17921127
  • 7. Um Pouco Sobre R: O Que É? • O R não é um "aplicativo" que lhe possibilita através de uma interface gráfica amigável realizar algumas tarefas sem saber exatamente o que está fazendo; • O R é um ambiente de trabalho para realização de análises estatísticas; • Do ponto de vista da análise de dados, o R tem uma filosofia que o diferencia radicalmente dos outros softwares estatísticos; • ANALISAR DADOS É PROGRAMAR COM DADOS: toda a análise de dados deve ser pensada como a construção de um programa que ao ser executado gera a análise esperada.
  • 8. Um Pouco Sobre R: História • Desenvolvido originalmente por Ross Ihaka e Robert Gentleman (Depto Estatística da Universidade de Auckland, Nova Zelândia); • Inspirado em duas linguagens: • S (John Chambers e colegas – Bell Labs): sintaxe • Scheme (Hal Abelson and Gerald Sussman): implementação e semântica • R está disponível como um software livre, nos termos da GNU GPL (General Public License). • Windows, Linux, OS X (Mac)
  • 9. Um Pouco Sobre R: História • 1980: Linguagem S: desenvolvida por R. Becker, J. Chambers e A. Wilks (AT&T Bell Laboratories) • 1980: Versão comercial: S-Plus (Insightful Corporation) • 1996: Versão livre: R desenvolvido por R. Ihaka e R. Gentleman (Universidade de Auckland) • 1997: R Development Core Team • Hoje: 20 desenvolvedores principais e muitos outros colaboradores em todo o mundo • Estatísticos, matemáticos e programadores
  • 10. Um Pouco Sobre R: Características • INTERFACE: o R é uma interface para análises de dados, criando um ambiente de trabalho; • INTERATIVIDADE: essa interface é interativa, isto é, você digita comandos e obtêm os resultados; • MODULAR: o R é composto por módulos, que são chamados de pacotes (packages). O pacote básico traz a funcionalidade necessária para as análises matemáticas e estatísticas mais usuais. Existem literalmente milhares de outros pacotes para realizar análises específicas nas mais diversas áreas do conhecimento científico.
  • 11. Um Pouco Sobre R: Características • FUNCIONAL: a linguagem S, a linguagem que se fala dentro do R, é uma linguagem funcional, isto é, todas as análises e ações são realizadas por funções; • ORIENTAÇÃO PARA OBJETOS: a linguagem S é uma linguagem de programação orientada para objetos, isto é, todas as entidades no ambiente R (dados, análises, gráficos, funções) são efetivamente objetos; • COLABORATIVO: o R é um esforço mundial de programação em código aberto.
  • 12. Vantagens & Desvantagens Vantagens Desvantagens Rápido e gratuito Curva de aprendizagem significativa Pesquisadores de Estatística fornecem os seus métodos em pacotes de R Não há suporte comercial Nos gráficos perde apenas para o Matlab Trabalhando com grandes conjuntos de dados é limitada pela RAM Comunidade de usuários ativos Fácil cometer erros se não conhecer bem a linguagem Excelente para a simulação, programação, análises intensivas de computador, etc. Preparação e limpeza de dados pode ser mais confusa e mais propenso erro em R que em soluções proprietárias como SPSS ou SAS Interfaces com software de armazenamento de banco de dados (SQL) Descobrir que métodos utilizar ou como usar uma função pode ser frustrante.
  • 13. Pipeline de Analytics • Importação de arquivos (readr, readxl, haven, data.table) • Limpeza e tratamento de dados (dplyr, data.table, tidyr, stringr) • Gráficos (ggplot2, dygraphs, plotly) • Interface com bancos de dados (RPostgreSQL, RMySQL, RODBC) • Análise preditiva / Data Science (caret, forecast, rpart, e1071, knn, • randomForest) • Relatório analítico final (rmarkdown, knitr) • Dashboards interativos (shiny, shinydashboard)
  • 14. Noções de Programação • parênteses "()": são utilizados para toda e qualquer função. P. ex. função(argumento) • atribuição "<-": são utilizados para nomear objetos. P. ex. nome do objeto <- função(argumento) • chaves "{}": são utilizados para construir novas funções. P. ex. função(argumento){ comandos resultados } • aspas "" são utilizadas para denominar caracteres. P. ex. "Oi, meu nome é John Snow"
  • 15. Nomes de Variáveis • O R é case sensitive – isto é, letras maiúsculas e minúsculas são diferenciadas – portanto x1 (com x minúsculo) e X1 (com x maiúsculo) são objetos diferentes; • Os nomes dos objetos no R podem conter combinações arbitrárias de números, textos, bem como ponto ( . ) e underscore ( _ ). Entretanto, os nomes não podem começar com números ou underscore.
  • 16. Pedindo Ajuda? • help.start() • apropos("sear") • help("print") • ?print, ??print • help.search("regression") • help.search("linear regression") • args("sd") • sd
  • 17. Alterando Diretório de Trabalho • getwd() • setwd("C:UsersMauricioDocumentsWorkR") • setwd(choose.dir()) • dir() • list.files()
  • 18. Gerenciando o Workspace • ls() • objects() • object.size(objeto) • rm(objeto) • lista_obj <- ls() • rm(list=lista_obj) • rm(list = ls()) • ls(pattern="y") • rm(list=ls(pattern="y"))
  • 19. Salvando o Workspace • # grava o seu workspace com o nome genérico: ".RData" • save.image() • # grava o seu workspace com o nome indicado • save.image(file="minha_sessao_inicial_de_R.RData") • load(file=" minha_sessao_inicial_de_R.RData ") • save(objeto, file="objeto.RData") • q()
  • 20. Instalando e Ativando Pacotes • install.packages("nomedopacote") • install.packages("nomedopacote", dependencies = TRUE) • library() • library(nomedopacote) • search() • getOption("defaultPackages") • detach(package:nomedopacote) • remove.packages(nomedopacote)
  • 21. Lendo Arquivos • dados<-read.table(file.choose(), header=T) • dados <- read.table("arquivo.csv", header = TRUE, sep = ";", dec = ",") • dados2 <- read.csv2("arquivo.csv", stringsAsFactors = FALSE) • library(gdata) • dados.xls <- read.xls("arquivo.xls", sheet = "Plan1", header = TRUE, dec = ",") • str(), head(), tail() • attach(), detach()
  • 22. Criando Sequências • 1:10 • (1:10) * 10 • seq(from=0, to=100, by=10) • seq(from=0, to=100, len=10) • seq(from = 1, to = 10, length.out = 15) • rep("A", times=10) • rep(c("A", "B", "C"), times=10) • rep(c("A", "B", "C"), each=10) • seqABC <- rep(c("A", "B", "C"), times=c(2,3,5)) • runif(10, 1, 100)
  • 23. Trabalhando com Datas • copa.70 <- "21/06/70" • copa.94 <- "17/07/94" • copa.94 - copa.70 • class(copa.70); class(copa.94) • copa.70 <- as.Date(copa.70,format="%d/%m/%y") • copa.94 <- as.Date(copa.94,format="%d/%m/%y") • class(copa.70); class(copa.94) • copa.94 - copa.70
  • 24. Conversão de Tipos • class(objeto) • typeof(objeto) • is.integer(objeto) • is.double(objeto) • is.numeric(objeto) • is.character(objeto) • is.logical(objeto) • as.character(objeto) • as.numeric(objeto)
  • 25. Tipos de Objetos • vector: o mais elementar e um dos mais importantes; • matrix e array: generalizações multi-dimensionais de vetores; • factor: forma compacta para manipulação de dados categóricos; • list: forma geral de vetores, nos quais os elementos não precisam ser do mesmo tipo básico. Útil p.ex. para retorno de funções, quando diversos objetos necessitam ser devolvidas; • data frames: são estruturas na forma de matrizes, em que as colunas podem ser de diferentes tipos básicos; • funções: maneira simples e conveniente de estender as funcionalidades do R.
  • 26. Criação de Objetos • a = 1:5 • b = factor(rep(c("a","b","c"), each=3)) • c = data.frame(sec=c("XIX", "XX", "XXI"), inicio=c(1801,1901,2001)) • d = matrix(round(runif(40,0,100)), ncol=8) • e = array(1:12, c(3,2,2)) • minha.lista = list(um.vetor = a, um.fator = b, um.data.frame = c, uma.matriz = d) • str(minha.lista); str(minha.lista$um.data.frame); str(d) • length(b); length(minha.lista); dim(minha.lista$um.data.frame); nrow(e); ncol(e)
  • 27. Indexando e Acessando Itens • O operador [ ] sempre retorna um objeto da mesma classe que o original. Pode ser usado para selecionar múltiplos elementos de um objeto • O operador [[ ]] é usado para extrair elementos de uma lista ou data frame. Pode ser usado para extrair um único elemento, e a classe do objeto retornado não precisa necessariamente ser uma lista ou data frame. • O operador $ é usado para extrair elementos nomeados de uma lista ou data frame. É similar ao operador [[ ]].
  • 28. Indexando e Acessando Itens (Vetores) • cont <- c(8, 4, NA, 9, 6, 1, 7, 9) • cont[4] • cont[c(1, 4, 8)], cont[-c(1, 4, 8)] • cont[1:5] • cont[seq(1, 8, by = 2)] • cont[is.na(cont)], cont[!is.na(cont)] • cont[is.na(cont)] <- 0, is.na(cont) <- 3 • names(cont) <- letters[1:length(cont)] • cont["d"] • cont[c("f", "a")]
  • 29. Indexando e Acessando Itens (Matrizes) • mat <- matrix(1:9, nrow = 3) • mat[2,3] • mat[, 1], mat[1, ] • mat[3, 2, drop = FALSE] • mat[1, , drop = FALSE] • mat[c(1, 3), c(2, 3)] • colnames(mat) <- LETTERS[1:3] • mat[, "B"], mat[1, "C"] • rownames(mat) <- LETTERS[24:26] • mat["X", ], mat["Y", "A"]
  • 30. Indexando e Acessando Itens (Listas) • lis <- list(c(3, 8, 7, 4), mat, 5:0) • lis[[2]] • lis[[1]][3] • lis[[2]][2, 3] • lis <- list(vetor1 = c(3, 8, 7, 4), mat = mat, vetor2 = 5:0) #names(lis) <- c("vetor1", "mat", "vetor2") • lis$mat • lis$mat[2, 3] • lis$vetor1[3] • lis[["mat"]] • lis[["vetor1"]][3]
  • 31. Indexando e Acessando Itens (Data Frames) • da <- data.frame(A = 4:1, B = c(2, NA, 5, 8)) • da[2, 1] • da[, 2] • da[,"B"] • da[1, ] • da["1", ] • da$A • da$B[3] • da$B[c(2, 4)] • da[is.na(da$A), ], da[is.na(da$B), ], da[!is.na(da$B), ] • with(da, A), with(da, B[3])
  • 32. Seleção Condicional • dados <- c(5, 15, 42, 28, 79, 4, 7, 14) • dados[dados > 15], dados[dados > 15 & dados <= 35] • dados > 15 & dados <= 35, dados > 15 | dados <= 35 • cara <- letters[1:length(dados)] • dados[cara == "c"], dados[cara %in% c("a", "c")] • cara[dados == 15], cara[dados > 30] • cara[dados %in% c(4, 14)] • which(dados > 15), which(dados > 15 & dados <= 35), which(cara == "c") • which(cara %in% c("a", "c"))
  • 33. Seleção Condicional • dados <- data.frame(ano = c(2001, 2002, 2003, 2004, 2005), captura = c(26, 18, 25, 32, NA), porto = c("SP", "RS", "SC", "SC", "RN")) • dados[dados$ano == 2004, ] • dados[dados$porto == "SC", ] • dados[dados$captura > 20, "captura"] • dados[dados$captura > 25 & dados$porto == "SP", ] • subset(dados, porto == "SC") • subset(dados, captura > 20) • subset(dados, captura > 20, select = captura)
  • 38. Estatística Descritiva Estatística Descritiva Nome da Função Média mean Mediana median Mínimo min Máximo max Amplitude de variação range Quartis e quantis quantile Distância Interquartil (Inter Quarter Range) IQR Variância var Desvio padrão (Standard Deviation) sd Desvio abosluto mediano (Mean Absolut Deviation) mad
  • 39. Link’s Úteis • Página do Projeto está disponível em http://www.r-project.org/; • Página de download está disponível em http://cran.r-project.org; • Página do RStudio: http://www.rstudio.com/; • Página do Tinn-R: http://nbcgib.uesc.br/lec/software/desenvolvidos/editores/tinn-r/en; • Tutoriais estão disponíveis em http://cran.r-project.org/other-docs.html; • Grupos de discussão são encontrados em http://wiki.r-project.org/rwiki/doku.php; • Novidades são disponíveis em http://cran.r-project.org/doc/Rnews/; • R site search: http://finzi.psych.upenn.edu/search.html; • CRAN Task Views: http://cran.r-project.org/web/views/; • Cartão de referência preparado por Jonathan Baron: http://www.leg.ufpr.br/~paulojus/misc/refcard.pdf.
  • 40. Os 10 Mandamentos do R 0º - Não entrarás em pânico! 1º - Utilizarás o R para tuas análises bem como para a manipulação de teus dados(não mais o Excel); 2º - Nunca digitarás o código no console; 3º - Salvarás seus scripts e não se preocuparás com o .RData; 4º - Sempre concatenarás; 5º - Jamais esquecerás dos parênteses das funções; 6º - Conferirás o diretório de trabalho e os dados após a importação, antes de enlouqueceres; 7º - Usarás o help antes de perguntares e não culparás o R por teus erros; 8º - Não esmorecerás após as primeiras noites em claRo e jamais amaldiçoarás o R por tuas faltas de vírgulas; 9º - Lembrarás das aspas dos caracteres; 10º- Não cobiçarás e aperfeiçoarás os códigos alheios e nunca ocultarás o código e a autoria original;