class: center, middle, inverse, title-slide #
Crash Course de R
## Introdução ao R e comandos básicos ### Prof. Carlos Trucíos
ctruciosm.github.io
carlos.trucios@facc.ufrj.br
### Faculdade de Administração e Ciências Contábeis, Universidade Federal de Rio de Janeiro --- layout: true <a class="footer-link" href="http://ctruciosm.github.io">ctruciosm.github.io — Carlos Trucíos (FACC/UFRJ)</a> ---
--- class: inverse, right, middle # Introdução --- ## Introdução <center> <div class="figure"> <img src="imagens/data-science.png" alt="Fonte: LIvro R for Data Science" width="65%" /> <p class="caption">Fonte: LIvro R for Data Science</p> </div> </center> - **Importar** Trazer os dados contidos num arquivo, banco de dados, API, etc, para o R -- - **Organizar (Tidy)** Armazenar os dados de uma forma que seja mais facil de se trabalhar. Cada coluna é uma variável e cada linha é uma observação -- - **Transformar** selecionar o grupo de interesse, crear novas varáveis que são função das já existentes, agregar dados, etc --- ## Introdução <center> <div class="figure"> <img src="imagens/data-science.png" alt="Fonte: LIvro R for Data Science" width="65%" /> <p class="caption">Fonte: LIvro R for Data Science</p> </div> </center> - **Visualisar** Fazer gráficos que nos permitam obter _insights_ dos dados. Eventualmente podem trazer novas hipóteses ou mesmo mostrar que precisamos de mais/diferentes dados -- - **Modelar** Utilizar um modelo matemático/estatístico/econométrico para responder às perguntas de interesse. -- - **Comunicar** A parte final de todo projeto, onde os resultados e _insights_ são apresentados. --- ### Introdução <center> R is not just a programming language, but it is also an interactive environment for doing data science. Handley W. </center> -- <center> <img src="imagens/R_Rstudio.png" width="40%" /> </center> -- - [*R*](https://cran.r-project.org) é um *software* gratuito, facil de usar e possui uma comunidade grande desenvolvendo pacotes novos todo dia. -- - Sempre podemos utilizar o R *nativo*, mas uma IDE poderosa e muito útil é o [R studio](https://rstudio.com/products/rstudio/download/). -- - Uma alternativa é utilizar o [R studio Cloud](https://rstudio.cloud), porém a versão gratuita tem certas limitações em tempo de processamento e capacidade de armazenamento. --- ## Introdução .left-column[ - **1 (editor)**: onde escrevemos o código, - **2 (consola)**: onde tudo no R acontece, - **3 (ambiente)**: objetos e funções carregadas no ambiente do R, - **4 (outros)**: arquivos, gráficos, pacotes, ajuda, ... ] .right-column[ <div class="figure"> <img src="imagens/RstudioCloud.png" alt="Rstudio Cloud" width="100%" /> <p class="caption">Rstudio Cloud</p> </div> ] --- class: inverse, right, middle # Instalando pacotes --- ## Instalando pacotes - Quando trabalhamos com *R* precisaremos constantemente instalar pacotes e carregalos no *R*. -- - Instalar pacotes é uma tarefa simples e pode ser feita com apenas uma linha de código: ```r install.packages("nome_do_pacote") ``` -- Uma vez o pacote esteja instalado, precisamos carregá-lo no *R*. Isto é feito com a seguinte linha de código: ```r library(nome_do_pacote) ``` -- #### Exemplo ```r install.packages("tidyverse") library(tidyverse) ``` --- ## Instalando pacotes #### Hands-on: 1. Instalar o pacote `tidyverse` 2. Carregar o pacote `tidyverse` 3. Instalar os pacotes `nycflights13`, `gapminder`, `Lahman` 4. Carregar os pacotes `nycflights13`, `gapminder`, `Lahman` -- #### Gabarito: ```r pacotes = c("nycflights13", "gapminder", "Lahman") install.packages(pacotes) library(nycflights13) library(gapminder) library(Lahman) ``` --- class: inverse, right, middle # Comandos básicos --- ## Comandos básicos <center> Escrever código no R é fácil e intuitivo. </center> -- - Por exemplo podemos utilizá-lo como calculadora ```r 2+4 3-1 4*5 20/2 2^3 floor(2.99) sin(pi) cos(pi) tan(tan) sin(pi/2)^2 + cos(pi/2)^2 ``` --- ## Comandos básicos - Também podemos fazer cálculos mais interessantes ```r peso <- c(66, 75.3, 82.1, 51.5, 72, 71.7, 68.2, 70) sum(peso) # soma ``` ``` ## [1] 556.8 ``` ```r mean(peso) # média ``` ``` ## [1] 69.6 ``` ```r median(peso) # mediana ``` ``` ## [1] 70.85 ``` ```r sd(peso) # desvio padrão ``` ``` ## [1] 8.796103 ``` --- ## Comandos básicos #### Hands-on: 1. Escreva os seguintes comandos: - `10 %% 2`, - `10 %% 3`, - `11 %% 3` - Descubriu o que o operador `%%` faz? 2. O que o operado `%/%` faz? 3. O seguinte vetor contém as notas da `\(P_1\)` de alunos de uma determinada matéria na UFRJ ```r notas <- c(9.4, 8.5, 8.4, 5.2, 7.5, 7.4, 7.9, 7.4, 7.5, 7.5, 5.5, 9.1, 7, 7.4, 6, 9, 9.4) ``` Calcule: `min()`, `max()`, `sum()`, `length()`, `sum()/length()`, `mean()`, `median()`, `sd()`, `var()` -- ```r c(min(notas), max(notas), sum(notas), length(notas), sum(notas)/length(notas), mean(notas), median(notas), sd(notas), var(notas)) ``` ``` ## [1] 5.200000 9.400000 130.100000 17.000000 7.652941 7.652941 7.500000 ## [8] 1.260515 1.588897 ``` --- ## Vetores e matrizes no R - **vetores:** um vetor é conjunto de objetos do mesmo tipo, vetores no _R_ são definidos utilizando `c()`. ```r x <- c(1, 2, 3, 4, 5) x ``` ``` ## [1] 1 2 3 4 5 ``` -- vetores podem ser de vários tipos: * `logical` * `character` * `integer` * `double` --- ## Vetores e matrizes no R ```r # Lógicos x_logical <- c(TRUE, FALSE, FALSE, TRUE) x_logical ``` ``` ## [1] TRUE FALSE FALSE TRUE ``` ```r typeof(x_logical) ``` ``` ## [1] "logical" ``` -- ```r # Caracter (texto) x_character <- c("Elisa", "Lucas", "Brenda", "Caio") x_character ``` ``` ## [1] "Elisa" "Lucas" "Brenda" "Caio" ``` ```r typeof(x_character) ``` ``` ## [1] "character" ``` --- ## Vetores e matrizes no R ```r # numéricos (inteiros) x_int <- c(1, 2, 3, 4, 5) # teste também com c(1L, 2L, 3L, 4L, 5L) x_int ``` ``` ## [1] 1 2 3 4 5 ``` ```r typeof(x_int) ``` ``` ## [1] "double" ``` -- ```r # numéricos (reais) x_double <- c(1.5, 2.42, 3.76423, 0.434, 5.2) x_double ``` ``` ## [1] 1.50000 2.42000 3.76423 0.43400 5.20000 ``` ```r typeof(x_double) ``` ``` ## [1] "double" ``` --- ## Vetores e matrizes no R ```r x_numeric <- c(1, 0.444, 3, 4.5, pi) typeof(x_numeric) ``` ``` ## [1] "double" ``` -- ```r x_mix <- c(TRUE, pi, 3, "Carlos") typeof(x_mix) ``` ``` ## [1] "character" ``` ```r x_mix ``` ``` ## [1] "TRUE" "3.14159265358979" "3" "Carlos" ``` -- para descobrir o número de elementos no vetor, utilizamos `length()`. ```r length(x_mix) ``` ``` ## [1] 4 ``` --- ## Vetores e matrizes no R - Se quisermos algum elemento do vetor, baste selecionar com `[i]` o elementos desejado. ```r x_double ``` ``` ## [1] 1.50000 2.42000 3.76423 0.43400 5.20000 ``` ```r x_double[2] ``` ``` ## [1] 2.42 ``` ```r x_double[1:4] ``` ``` ## [1] 1.50000 2.42000 3.76423 0.43400 ``` ```r x_double[c(1,3,5)] ``` ``` ## [1] 1.50000 3.76423 5.20000 ``` --- ## Vetores e matrizes no R - Se quisermos alterar um elemento do vetor: ```r x_double ``` ``` ## [1] 1.50000 2.42000 3.76423 0.43400 5.20000 ``` ```r x_double[2] <- 2.5 x_double ``` ``` ## [1] 1.50000 2.50000 3.76423 0.43400 5.20000 ``` -- - Se quisermos alterar o tipo de vetor: ```r as.character(x_double) ``` ``` ## [1] "1.5" "2.5" "3.76423" "0.434" "5.2" ``` -- outras opções são: `as.numeric()`, `as.factor()`, `as.logical()` --- ## Vetores e matrizes no R - **matrizes:** uma matriz é uma coleção de elementos organizados em duas dimensões, no _R_ para criar matrizes utilizamos `matrix()`. -- ```r A <- matrix(c(1,2,3,4,5,6), nrow = 2, ncol = 3) A ``` ``` ## [,1] [,2] [,3] ## [1,] 1 3 5 ## [2,] 2 4 6 ``` -- ```r A <- matrix(c(1,2,3,4,5,6), nrow = 2, ncol = 3, byrow = TRUE) A ``` ``` ## [,1] [,2] [,3] ## [1,] 1 2 3 ## [2,] 4 5 6 ``` --- ## Vetores e matrizes no R Se quisermos saber as dimensões da matriz, utilizamos `dim()` e se quisermos especificamente o número de linhas ou de colunas, utilizamos `nrow()` e `ncol()`. -- ```r dim(A) ``` ``` ## [1] 2 3 ``` ```r ncol(A) ``` ``` ## [1] 3 ``` ```r nrow(A) ``` ``` ## [1] 2 ``` --- ## Vetores e matrizes no R Se quisermos selecionar alguns elementos da matriz ```r A[1,1] ``` ``` ## [1] 1 ``` ```r A[1:2,c(1,3)] ``` ``` ## [,1] [,2] ## [1,] 1 3 ## [2,] 4 6 ``` -- Se quisermos alterar alguns elementos da matriz: ```r A[1,2] <- 9 A ``` ``` ## [,1] [,2] [,3] ## [1,] 1 9 3 ## [2,] 4 5 6 ``` --- ## Operações com matrizes ```r A ``` ``` ## [,1] [,2] [,3] ## [1,] 1 9 3 ## [2,] 4 5 6 ``` ```r # Transposta t(A) ``` ``` ## [,1] [,2] ## [1,] 1 4 ## [2,] 9 5 ## [3,] 3 6 ``` ```r # Inversa solve(A[1:2,1:2]) ``` ``` ## [,1] [,2] ## [1,] -0.1612903 0.29032258 ## [2,] 0.1290323 -0.03225806 ``` --- ## Operações com matrizes ```r A[1:2,1:2] %*% solve(A[1:2,1:2]) ``` ``` ## [,1] [,2] ## [1,] 1 5.551115e-17 ## [2,] 0 1.000000e+00 ``` ```r # Multiplicação de matrizes B <- matrix(c(1,2,3,4,5,6), nrow = 3, ncol = 3) A%*%B ``` ``` ## [,1] [,2] [,3] ## [1,] 28 67 28 ## [2,] 32 77 32 ``` -- ```r A%*%A # funciona? ``` --- ## Vetores e matrizes no R --- ## Listas no R **Listas**: São objetos que contém outros objetos (que podem ser de tipos diferentes). Para criar uma lista utilizamos o comando `list()`. ```r list_data <- list("Vermelho", c(1,5,7), TRUE, 51.23, A) print(list_data) ``` ``` ## [[1]] ## [1] "Vermelho" ## ## [[2]] ## [1] 1 5 7 ## ## [[3]] ## [1] TRUE ## ## [[4]] ## [1] 51.23 ## ## [[5]] ## [,1] [,2] [,3] ## [1,] 1 9 3 ## [2,] 4 5 6 ``` --- ## Outras estruturas no R > Existem outras estruturas no *R* como arrays (`array()`), fatores (`factor()`), séries temporais (`ts()`), data frames (`data.frame()`). Iremos conhecendo elas a medida que formos precisando. -- #### Hands-on: A função `rnorm()` gera números aleatórios de uma distribuição `\(N(0,1)\)`. 1. Crie um vetor `x_normal` formado por 4 elementos de uma distribuição normal padrão. 2. Crie uma matrix `M` com 3 colunas, em que os elementos são os elementos contidos em `x_normal` 3. Calcule `M * M` e `M %*% M`, o que acontece? qual é diferença entre essas operações?. --- ## Vetores e matrizes no R #### Gabarito: ```r x_normal <- rnorm(4) M <- matrix(x_normal, ncol = 2) M ``` ``` ## [,1] [,2] ## [1,] -0.4744567 0.2227211 ## [2,] 1.5477940 -1.4570011 ``` ```r M*M ``` ``` ## [,1] [,2] ## [1,] 0.2251092 0.04960468 ## [2,] 2.3956664 2.12285228 ``` ```r M%*%M ``` ``` ## [,1] [,2] ## [1,] 0.5698355 -0.4301764 ## [2,] -2.9894989 2.4675786 ``` --- # Comentários finais - A gente consegue conhecer como funciona qualquer função utilizando o comando ```r help(nome_da_funcao) ``` -- #### Para praticar em casa 1. Crie um vetor chamado `x_uniforme` que contenha 100 números aleatorios de uma disribuição uniforme `\(U_{[5,10]}\)` (dica: veja o `help(runif)`). 2. O que acontece se fizermos `log(x_uniforme)`? 3. Crie um vetor chamado `x_chi` que contenha 100 números aleatorios de uma disribuição chi-quadrado com 1 grau de liberdade `\(\chi^2_1\)` (dica: veja o `help(rchisq)`). 4. Some `x_uniforme` com `x_chi`, chame o vetor resultante como `x_soma` 5. Aplique a função `floor()` no vetor x_soma 6. Um número é par se ele é divisivel por 2, quantos números pares temos em `x_soma`? (dica: o operador `%%` e a função `sum()` podem ajudar) 7. Para que serve a função `set.seed()`? --- # Algumas funções úteis As seguintes Tabelas foram extraidos do livro [*R for Beginners* do *Emmanuel Paradis*](https://cran.r-project.org/doc/contrib///Paradis-rdebuts_en.pdf) <center> <img src="imagens/fun1.png" width="50%" /><img src="imagens/fun2.png" width="50%" /> </center> --- # Algumas funções úteis <center> <img src="imagens/fun3.png" width="45%" /> </center> --- # Algumas funções úteis <center> <img src="imagens/distribuicoes.png" width="50%" /> </center> --- # Quer saber mais do R? .pull-left[ <img src="imagens/R4DS.png" width="65%" /> ] .pull-right[ ## Livro: [R for Data Science](https://r4ds.had.co.nz) ## Um breve comentário do livro no meu [blog](https://ctruciosm.github.io/posts/2021-03-14-book-review-r-for-data-science/) ]