class: center, middle, inverse, title-slide .title[ # Sessão R basico - 2 ] .subtitle[ ## “Documento RMarkdown” ] .author[ ### Rui Vicente ] .date[ ### 2023-01-31 ] --- ### Destinatários. #####Destinatários: Qualquer formando interessado em processamento de informação com o intuito de uma melhor compreensão das assimetrias sociais ou outra, numa procura de reconhecimento das tecnologias livres, nomeadamente da linguagem de programação R, bastando para isso o nível de qualificação 2. #####Pré-requisitos: Os formandos terão de ter no mínimo experiência básica na computação como: instalação de programas; texto e pesquisa; navegador de internet. É necessária a utilização do computador com sistema operativo windows, Mac ou linux. --- ###Objectivos pedagógicos. #####No final da formação os formandos deverão ser capazes de: -- ####**Comportamento esperado**. - Realizar a instalação da linguagem de programação [R](https://cran.rstudio.com/) e o [RStudio](https://posit.co/download/rstudio-desktop/) com opção de poder trabalhar na cloud em [RStudio Cloud](https://login.posit.cloud/login?redirect=%2Foauth%2Fauthorize%3Fredirect_uri%3Dhttps%253A%252F%252Fposit.cloud%252Flogin%26client_id%3Dposit-cloud%26response_type%3Dcode%26show_auth%3D0%26show_login%3D1). - Reconhecer funções e operadores para tarefas básicas. - Identificar os níveis de variáveis apresentados. - Identificar, reproduzir e transformar na **linha de comandos** e/ou a partir de um **script** as estruturas de dados. - Construir um objecto de acordo com a temática. -- **Condições de aplicação** - No computador através do ambiente de trabalho do RStudio; da consola do R (Terminal); ou a partir do RStudio cloud. **Critérios de êxito** - O formando terá de criar um conjunto de representações relevantes (i.e., tabelas), que dêem conta de assimetrias, prefencialmente. --- ###Introdução. - A informação e os média. - Investigação e software livre. - As possibilidades da linguagem de programação R. ---- -- #####Exemplo com o Eurostat. ```r pol_1 <- search_eurostat("mental") ```
--- #####Tabela dinâmica. ```r pol_2 <- get_eurostat("hsw_exp3") pol_3 <- label_eurostat(pol_2) pol_4 <- pol_3 %>% filter(geo == "Portugal") %>% select(time, values, sex) %>% group_by(time, sex) %>% summarise(média = round(mean(values, na.rm = TRUE),2)) datatable(pol_4[-c(2,3),], options = list(pageLength = 7),autoHideNavigation = TRUE,) ```
--- ###Como encontrar ajuda no R. - Operador ( ? ) e ( ?? ). ```r ?aov ``` aov {stats} R Documentation Fit an Analysis of Variance Model Description Fit an analysis of variance model by a call to lm for each stratum. Usage ... ... [?](http://mercury.webster.edu/aleshunas/R_learning_infrastructure/images/RStudio%20-%20opening%20view.png) - Função help() ```r help(package = tidyverse) ``` Documentation for package ‘tidyverse’ version 1.3.0 DESCRIPTION file. User guides, package vignettes and other documentation. Help Pages tidyverse_conflicts Conflicts between the tidyverse and other packages tidyverse_deps List all tidyverse dependencies ... ... --- ####Questões aos formandos. - O que fazemos quando queremos descrever ou melhorar um conceito em voga extraído dos média? - Em que medida o R, i.e., o software livre, o poderia preparar? ---- -- ####Quais os meios preferenciais de obtenção de informação? .pull-left[ ##### Para informação sobre linguagem de programação: 1 [StackOverflow](https://stackoverflow.com/) 2 [Github](https://github.com/) ] .pull-right[ #####Estatisticas. 3 [INE](https://www.ine.pt/xportal/xmain?xpgid=ine_main&xpid=INE) 4 [dados.gov](https://dados.gov.pt/pt/) 5 Portdata 6 Eurostat 7 ... ] #####Motores de busca. 7 Goole / DuckDuck / Yahoo / ... --- ###Conteúdos expecificos. #### 1)Instalação de pacotes; 2)Importar tabelas. ##### 1)Funções para instalar e carregar os pacotes (i.e., software adicional): **Install.packages()** e **library()**. ```r # instalar o pacote read_exel: # install.packages("read_exel") # carregar as livrarias do pacote read_exel: # library(read_exel) ``` ##### 2)Funções: **getwd()** e setwd(); **read.csv()** ou read.csv2() e **read_xlsx**, read_exel ou read_xls. ```r getwd() ``` ``` ## [1] "/home/rv/Untitled3" ``` ```r # setwd("...") # read.csv("ficheiro.csv", sep = ",", dec = ".") # read_xlsx("ficheiro.xlsx") ``` --- **O nosso data.frame**. ``` ## # A tibble: 4 × 4 ## nome classificação pontuação fact_pond ## <chr> <fct> <int> <dbl> ## 1 Jonas 1 56 -2.4 ## 2 Clara 2 54 -0.2 ## 3 Xico 3 45 1 ## 4 Adelaide 1 66 -2.1 ``` -- ####Objecto, nome e funções. - Para que um objecto fique gravado na memória do computador é necessário atribuir-lhe um nome, Wickham(2021). - O nome é associado ao objecto com o símbolo "assignment" ( <- ). - Geralmente utilizam-se minúsculas para o nome do objecto e o único símbolo aceitável é o "underscore" ( _ ), o ponto ( . ) serve para criar variáveis implícitas e não é contemplado nesta sessão. Desta forma os espaços entre nomes constituídos por mais de uma palavra deverão ser preenchidos por "underscore", e o nome não pode começar com um número. - As funções estão associadas aos parênteses ( () ) nos quais se inscrevem os argumentos. Numa função, para além dos argumentos, geralmente estão os nomes dos objectos e também se podem encontrar outras funções. --- Desta forma: ```r # df_exemplo <- read.csv("ficheiro.csv", sep = ",", dec = ".") ``` -- ####*A função c()* - Esta é das funções mais utilizadas na linguagem de programação R e tem o nome de "concatenation", que significa unir, concatenar, juntar, encadear. - Podemos então: ```r #unir um conjunto de números. num <- c(2,45,3,6:10) num ``` ``` ## [1] 2 45 3 6 7 8 9 10 ``` ```r #ou um conjunto de caracteres. car <- c("bolha","86maria","5","alfa-romeo") car ``` ``` ## [1] "bolha" "86maria" "5" "alfa-romeo" ``` **Ou qualquer outro conjunto**. --- ###Operadores - Aritmeticos: + , - , * , / . - Relacionais: > (maior), >= (maior ou igual), < (menor), <= (menor ou igual), == (igual) e != (diferente). - Lógicos: & (e) , | (ou). ```r a <- 2 b <- 4 a + b ``` ``` ## [1] 6 ``` ```r a != b ``` ``` ## [1] TRUE ``` ```r !a & b; !a | b ``` ``` ## [1] FALSE ``` ``` ## [1] TRUE ``` --- ###Nível de mensuração de variáveis(1). -Nominal e ordinal. ```r d1 <- factor(c(1,0,0,1,0), levels = c(0,1)) d2 <- ordered(c("a","b","c","d"), levels = c("a","b","c","d")) d1; d2 ``` ``` ## [1] 1 0 0 1 0 ## Levels: 0 1 ``` ``` ## [1] a b c d ## Levels: a < b < c < d ``` ```r class(d1) ``` ``` ## [1] "factor" ``` ```r class(d2) ``` ``` ## [1] "ordered" "factor" ``` --- ###Nível de mensuração de variáveis(2). - Intervalar. ```r temp <- seq(-0, 40, 0.001) temp <- round(sample(temp, 8),1) negativos <- c(-4,-1) temp <- c(temp,negativos) temp ``` ``` ## [1] 13.4 1.3 37.6 5.9 28.9 34.0 18.0 21.8 -4.0 -1.0 ``` - Razão. ```r altura <- rep(c(450:550)/2.9, 100) altura <- round(sample(altura, 10),1) altura ``` ``` ## [1] 182.4 174.5 176.6 189.0 173.8 188.3 189.0 158.3 183.4 165.2 ``` --- ###Estruturas de dados no R(1). - Vectores ```r #vector lógico logi_2 <- c(TRUE,FALSE,FALSE,TRUE) logi_2 ``` ``` ## [1] TRUE FALSE FALSE TRUE ``` ```r class(logi_2) ``` ``` ## [1] "logical" ``` ```r #vector numérico num_2 <- c(3,4,5,6,7,8,9) num_2 ``` ``` ## [1] 3 4 5 6 7 8 9 ``` ```r class(num_2) ``` ``` ## [1] "numeric" ``` --- ###Estruturas de dados no R(2). ```r #vector de caracteres ("string") car_2 <- c("João","Maria","Adelaide") car_2 ``` ``` ## [1] "João" "Maria" "Adelaide" ``` ```r class(car_2) ``` ``` ## [1] "character" ``` ######\#coerção ```r #Double c(1,3,5,7,9,11,13)/2 ``` ``` ## [1] 0.5 1.5 2.5 3.5 4.5 5.5 6.5 ``` ```r typeof(c(1,3,5,7,9,11,13)/2) ``` ``` ## [1] "double" ``` --- ###Estruturas de dados no R(3). Vector numérico de tipo "Integer" ```r #Integer c(1L,3L,5L,7L,9L,11L,13L) ``` ``` ## [1] 1 3 5 7 9 11 13 ``` ```r typeof(c(1L,3L,5L,7L,9L,11L,13L)) ``` ``` ## [1] "integer" ``` - Fatores ```r factor_1 <- sample(rep(c("brisa", "vento", "ventania", "tempestade", "furacão"), 300),30) factor_1 <- factor(factor_1, levels = c("brisa", "vento", "ventania", "tempestade", "furacão")) class(factor_1) ``` ``` ## [1] "factor" ``` --- ###Estruturas de dados no R(4). <!-- --> --- ###Estruturas de dados no R(5). - Listas ```r a <- c(3,4,5,6) lista_1 <- list(2, "Barco", "2", 1:4, a, table(c = c(4,3,2,1))) typeof(lista_1) ``` ``` ## [1] "list" ``` - Matrizes ```r matriz_1 <- matrix(c(1:9), nrow = 3, ncol = 3) matriz_1 ``` ``` ## [,1] [,2] [,3] ## [1,] 1 4 7 ## [2,] 2 5 8 ## [3,] 3 6 9 ``` ```r class(matriz_1) ``` ``` ## [1] "matrix" "array" ``` --- ###Estruturas de dados no R(6). - Data.frame <table> <thead> <tr> <th style="text-align:left;"> k </th> <th style="text-align:left;"> w </th> <th style="text-align:left;"> x </th> <th style="text-align:right;"> y </th> <th style="text-align:right;"> z </th> </tr> </thead> <tbody> <tr> <td style="text-align:left;"> Jan </td> <td style="text-align:left;"> joão </td> <td style="text-align:left;"> A </td> <td style="text-align:right;"> 14.14214 </td> <td style="text-align:right;"> 90 </td> </tr> <tr> <td style="text-align:left;"> Feb </td> <td style="text-align:left;"> joão </td> <td style="text-align:left;"> B </td> <td style="text-align:right;"> 14.89966 </td> <td style="text-align:right;"> 74 </td> </tr> <tr> <td style="text-align:left;"> Mar </td> <td style="text-align:left;"> joão </td> <td style="text-align:left;"> C </td> <td style="text-align:right;"> 15.62050 </td> <td style="text-align:right;"> 84 </td> </tr> <tr> <td style="text-align:left;"> Apr </td> <td style="text-align:left;"> joão </td> <td style="text-align:left;"> D </td> <td style="text-align:right;"> 16.30951 </td> <td style="text-align:right;"> 61 </td> </tr> <tr> <td style="text-align:left;"> May </td> <td style="text-align:left;"> joão </td> <td style="text-align:left;"> E </td> <td style="text-align:right;"> 16.97056 </td> <td style="text-align:right;"> 60 </td> </tr> <tr> <td style="text-align:left;"> Jun </td> <td style="text-align:left;"> maria </td> <td style="text-align:left;"> F </td> <td style="text-align:right;"> 17.60682 </td> <td style="text-align:right;"> 88 </td> </tr> <tr> <td style="text-align:left;"> Jul </td> <td style="text-align:left;"> maria </td> <td style="text-align:left;"> G </td> <td style="text-align:right;"> 18.22087 </td> <td style="text-align:right;"> 43 </td> </tr> <tr> <td style="text-align:left;"> Aug </td> <td style="text-align:left;"> maria </td> <td style="text-align:left;"> H </td> <td style="text-align:right;"> 18.81489 </td> <td style="text-align:right;"> 67 </td> </tr> <tr> <td style="text-align:left;"> Sep </td> <td style="text-align:left;"> maria </td> <td style="text-align:left;"> I </td> <td style="text-align:right;"> 19.39072 </td> <td style="text-align:right;"> 87 </td> </tr> <tr> <td style="text-align:left;"> Oct </td> <td style="text-align:left;"> maria </td> <td style="text-align:left;"> J </td> <td style="text-align:right;"> 19.94994 </td> <td style="text-align:right;"> 59 </td> </tr> </tbody> </table> --- ###Estruturas de dados no R(7). Cronstruindo um data.frame(). ```r z <- c(3,4,5,6) x <- c(letters[c(1:4)]) data.frame(z,x) ``` ``` ## z x ## 1 3 a ## 2 4 b ## 3 5 c ## 4 6 d ``` ```r data.frame(z = c(3,4,5,6), x = c(letters[c(1:4)])) ``` ``` ## z x ## 1 3 a ## 2 4 b ## 3 5 c ## 4 6 d ``` --- ###Operadores [ ] e $. Estruturas com NULL dimensões, Wickam(2021). ```r vector <- c(50:100) ``` ```r # posição: vector[45] ``` ``` ## [1] 94 ``` ```r # extrair um vector do vector original: vector_2 <- vector[c(50:55)] vector_2 ``` ``` ## [1] 99 100 NA NA NA NA ``` ```r #alterar um valor vector_2[1] <- 49 vector_2 ``` ``` ## [1] 49 100 NA NA NA NA ``` --- ###Operadores [ ] e $. Estruturas rectangulares (data.frame ou matrix). ```r df_2 <- data.frame(z = c(3,4,5,6), x = c(letters[c(1:4)])) # localizar um elemento: df_2[1,2] # primeiro digito refer-se à linha e o segundo à coluna. ``` ``` ## [1] "a" ``` ```r # extrair um ou mais valores para um vector ou tabela: df_2 <- df_2[c(1,2), c(1)] df_2 ``` ``` ## [1] 3 4 ``` ```r data.frame(df_2) ``` ``` ## df_2 ## 1 3 ## 2 4 ``` ```r # modificar valores à semelhança do procedimento para vectores. ``` --- ###Operadores [ ] e $. O operador $ serve para extrair ou alterar colunas de uma tabela. ```r df$pontuação ``` ``` ## [1] 56 54 45 66 ``` ```r df$pontuação <- c(55L,50L,45L,67L) df ``` ``` ## nome classificação pontuação fact_pond ## 1 Jonas 1 55 -2.4 ## 2 Clara 2 50 -0.2 ## 3 Xico 3 45 1.0 ## 4 Adelaide 1 67 -2.1 ``` #####**Filtrar com operador lógico exemplo:** ```r df[df$pontuação >= 60, ] ``` ``` ## nome classificação pontuação fact_pond ## 4 Adelaide 1 67 -2.1 ``` --- Referências Wicham, H. (2021). *Advanced R* (2 ed). CBC Press. https://adv-r.hadley.nz/