Semana 1

Manipulação e visualização de dados no R

Marina Scalon

2/5/23

Ementa

Técnicas de manipulação de dados no R utilizando o tidyverse: importação e transformação de dados. Técnicas para extração de informações dos dados: construindo visualizações. Uso do pacote ggplot2 para gerar gráficos. Uso do R para visualização espacial e construção de mapas. Comunicação utilizando markdown e Quarto.

Objetivos e Resultados

Descrição do curso

  • Neste curso iremos utilizar a plataforma Google Classroom para organizar as atividades - vocês receberão um e-mail contendo um convite para fazer o acesso.

  • As aulas são práticas e serão inteiramente presenciais, sendo necessário o uso de computadores pessoais para acompanhar. Os scripts utilizados são disponibilizados em https://rpubs.com/scalon.

  • O aprendizado será fixado por duas formas: exercícios direcionais com manipulação de banco de dados baseados nos desafios de tidytuesday (https://github.com/rfordatascience/tidytuesday) e o uso dos dados pessoais para aplicar os conhecimentos adquiridos.

  • Às quintas-feiras teremos exposição de conteúdo, e às terças-feiras teremos a correção dos exercícios em conjunto. Além disso, teremos um fórum de discussões para facilitar a comunicação durante toda disciplina.

Avaliação e Bibliografia

E afinal, o que vamos aprender?

  • Transformação/Manipulação de dados
    • Seleção das variáveis importantes
    • Filtrar observações chave
    • Criar novas variáveis
    • Computar sumários
    • Comunicar seus códigos
  • Visualização
    • Fazer gráficos elegantes e informativos para entender seus dados
    • Estrutura básica das ferramentas poderosas de transformar seus dados em gráficos
    • Mapas

Respostas no Formulário

Objetivos e Resultados

Aula Objetivos
Introdução Alinhar as expectivas da turma com a disciplina
R basico Entender o estilo de programação, a estrutura e tipos de objetos e como importar arquivos com os dados
Quarto/Markdown Aprender a utilizar o Quarto para visualização e comunicação de códigos, dados e figuras
Exercício e Correção Fixar o conteúdo a partir de exercícios práticos

R básico - Aula 0

  • Funcionalidades do Rstudio https://posit.co/

    • Editor, console, output e environment

    • Verificar versão atualizada

R básico -Aula 0

-   Atribuindo objetos a nomes (<- ou CTRL-)
-   R diferencia capitalização
-   Tipos de objetos
    -   Numeric: 12.3, 5, 999
    -   Character: "bom", "verdadeiro"
    -   Integer - números inteiros
    -   Complex - 3 + 2i
    -   Logical – TRUE/ FALSE
    
  -   Tipos de objetos
    -   Vector
    -   List
    -   Matrix
    -   Array
    -   Factor
    -   Data frame

Porque isso importa?

Exemplo no R!

# vector numeric
a <- c(1,2,3,4,5)
print(a)
[1] 1 2 3 4 5
class(a)
[1] "numeric"
# vetor integer
b <- (1:5)
class(b)
[1] "integer"
# list
c <- list(c(1:5), 20, TRUE)
print (c)
[[1]]
[1] 1 2 3 4 5

[[2]]
[1] 20

[[3]]
[1] TRUE
# matrix
d <-  matrix( c(1:6), nrow = 2, ncol = 3)
print(d)
     [,1] [,2] [,3]
[1,]    1    3    5
[2,]    2    4    6
# array
e <- array(c(1:6),dim = c(3,3,2))
print(e)
, , 1

     [,1] [,2] [,3]
[1,]    1    4    1
[2,]    2    5    2
[3,]    3    6    3

, , 2

     [,1] [,2] [,3]
[1,]    4    1    4
[2,]    5    2    5
[3,]    6    3    6
# factor
# vector of characters
f <- c("Lula", "Alckmin", "Dilma")
factor_f <- factor(f)
print(factor_f)
[1] Lula    Alckmin Dilma  
Levels: Alckmin Dilma Lula
# data frame
g <- data.frame(
   gender = c("Male", "Male","Female", "Female"), 
   height = c(152, 171.5, 165, 155), 
   Age = c(42,38,26,20))
print(g)
  gender height Age
1   Male  152.0  42
2   Male  171.5  38
3 Female  165.0  26
4 Female  155.0  20

Funções básicas MUITO úteis:

-   ls()
ls()
[1] "a"        "b"        "c"        "d"        "e"        "f"        "factor_f"
[8] "g"       
-   head()
-   summary()
-   str()

Importando dados:

-   Set working directory (recomendado!) ou esceve todo caminho de onde seus dados estão
    -   Planilhas em excel
        -   Transformar em .csv ou .txt (separado por vírgulas)
        -   read.csv(), read.csv2() ou read.table()
        -   Caso dado faltante, completar tabela com NA (read.csv não precisa!!)
        -   Diretamente do excel com o pacote readxl
        -   Usando ferramentas do RStudio
        
    -   Outros formatos
        -   SQL (pacote DBI)
        -   XML (pacote xml2)
        -   HTML (pacote XML, RCurl ou rvest)

Exemplo no R!

#####################################
###Definindo o diretório de trabalho#
#####################################
#setwd("C:/Marina/Pos-doutorado/PNPD_RFPR/Vis Man Dados/2023/Aula 1")

##################
#Importando dados#
##################
# x <- read.csv("Dados.csv")
x <- readr::read_csv('https://raw.githubusercontent.com/scalonmc/VisMan/master/VisManDados/Aula1/dados.csv')
head(x)
# A tibble: 6 x 13
  Amostra Tratamento especie Grupo individuo     N      P    Mg     K    Ca
    <dbl> <chr>      <chr>   <chr>     <dbl> <dbl>  <dbl> <dbl> <dbl> <dbl>
1       1 Floresta   AT      D             1  2.36 0.114  0.150 1.20  0.319
2       2 Floresta   AT      D             2  2.07 0.114  0.180 1.44  0.413
3       3 Floresta   AT      D             3  2.03 0.121  0.133 0.366 0.371
4       4 Floresta   BC      B             1  1.32 0.0643 0.159 0.679 0.576
5       5 Floresta   BC      B             2  1.23 0.0714 0.113 0.957 0.458
6       6 Floresta   BC      B             3  1.37 0.0786 0.116 0.75  0.347
# ... with 3 more variables: Al_ppm <dbl>, area <dbl>, peso <dbl>
tail(x)
# A tibble: 6 x 13
  Amostra Tratamento especie Grupo individuo     N      P     Mg     K    Ca
    <dbl> <chr>      <chr>   <chr>     <dbl> <dbl>  <dbl>  <dbl> <dbl> <dbl>
1      81 Campo      SA      B             3 2.03  0.0643 0.064  0.433 0.216
2      82 Campo      SM      S             1 0.848 0.0643 0.0722 0.385 0.172
3      83 Campo      SM      S             2 0.942 0.0714 0.0683 0.401 0.227
4      84 Campo      SM      S             3 1.18  0.05   0.108  0.752 0.248
5      85 Campo      SP      S             1 1.27  0.05   0.0853 0.807 0.127
6      86 Campo      SP      S             2 1.32  0.05   0.112  0.695 0.414
# ... with 3 more variables: Al_ppm <dbl>, area <dbl>, peso <dbl>
summary(x)
    Amostra        Tratamento          especie             Grupo          
 Min.   :  1.00   Length:129         Length:129         Length:129        
 1st Qu.: 33.00   Class :character   Class :character   Class :character  
 Median : 67.00   Mode  :character   Mode  :character   Mode  :character  
 Mean   : 79.82                                                           
 3rd Qu.: 99.00                                                           
 Max.   :256.00                                                           
                                                                          
   individuo           N               P                 Mg        
 Min.   :1.000   Min.   :0.612   Min.   :0.03570   Min.   :0.0053  
 1st Qu.:1.000   1st Qu.:1.225   1st Qu.:0.06430   1st Qu.:0.0745  
 Median :2.000   Median :1.413   Median :0.07140   Median :0.1026  
 Mean   :1.977   Mean   :1.704   Mean   :0.08012   Mean   :0.1124  
 3rd Qu.:3.000   3rd Qu.:2.026   3rd Qu.:0.08570   3rd Qu.:0.1471  
 Max.   :3.000   Max.   :4.994   Max.   :0.22860   Max.   :0.2745  
                                                                   
       K                Ca             Al_ppm             area       
 Min.   :0.1910   Min.   :0.0725   Min.   :   19.3   Min.   : 34.34  
 1st Qu.:0.3760   1st Qu.:0.1738   1st Qu.:  116.3   1st Qu.:137.17  
 Median :0.5090   Median :0.2727   Median :  180.8   Median :192.61  
 Mean   :0.6624   Mean   :0.3319   Mean   : 1763.2   Mean   :204.89  
 3rd Qu.:0.8140   3rd Qu.:0.4584   3rd Qu.:  419.5   3rd Qu.:257.68  
 Max.   :2.4910   Max.   :0.9681   Max.   :15012.5   Max.   :573.53  
                                                     NA's   :3       
      peso       
 Min.   :0.2584  
 1st Qu.:1.8373  
 Median :2.4810  
 Mean   :2.9656  
 3rd Qu.:3.8455  
 Max.   :9.4754  
 NA's   :3       
str(x)
spec_tbl_df [129 x 13] (S3: spec_tbl_df/tbl_df/tbl/data.frame)
 $ Amostra   : num [1:129] 1 2 3 4 5 6 7 8 9 10 ...
 $ Tratamento: chr [1:129] "Floresta" "Floresta" "Floresta" "Floresta" ...
 $ especie   : chr [1:129] "AT" "AT" "AT" "BC" ...
 $ Grupo     : chr [1:129] "D" "D" "D" "B" ...
 $ individuo : num [1:129] 1 2 3 1 2 3 1 2 3 1 ...
 $ N         : num [1:129] 2.36 2.07 2.03 1.32 1.23 ...
 $ P         : num [1:129] 0.1143 0.1143 0.1214 0.0643 0.0714 ...
 $ Mg        : num [1:129] 0.15 0.18 0.133 0.159 0.113 ...
 $ K         : num [1:129] 1.197 1.444 0.366 0.679 0.957 ...
 $ Ca        : num [1:129] 0.319 0.413 0.371 0.576 0.458 ...
 $ Al_ppm    : num [1:129] 122.8 251.8 206.5 96.8 103.3 ...
 $ area      : num [1:129] 288 262 184 149 263 ...
 $ peso      : num [1:129] 3.63 2.49 2.16 1.86 4.39 ...
 - attr(*, "spec")=
  .. cols(
  ..   Amostra = col_double(),
  ..   Tratamento = col_character(),
  ..   especie = col_character(),
  ..   Grupo = col_character(),
  ..   individuo = col_double(),
  ..   N = col_double(),
  ..   P = col_double(),
  ..   Mg = col_double(),
  ..   K = col_double(),
  ..   Ca = col_double(),
  ..   Al_ppm = col_double(),
  ..   area = col_double(),
  ..   peso = col_double()
  .. )
 - attr(*, "problems")=<externalptr> 

Porque isso importa?

plot(x$N~x$individuo)

x$individuo <- as.factor(x$individuo)
plot(x$N~x$individuo)

Para fazer

str(g)
'data.frame':   4 obs. of  3 variables:
 $ gender: chr  "Male" "Male" "Female" "Female"
 $ height: num  152 172 165 155
 $ Age   : num  42 38 26 20
# plot(g$height~g$gender) --> NÃO FUNCIONA!!!
g$gender <- as.factor(g$gender)
plot(g$height~g$gender)

Fatores são categorias ordenáveis

# plot(x$N~x$Tratamento)-> não funciona!
x$Tratamento <- as.factor(x$Tratamento) 
plot(x$N~x$Tratamento)

x$Tratamento <- ordered(x$Tratamento, levels = c("Floresta", "Savana", "Campo"))
plot(x$N~x$Tratamento)

Instalar pacotes:

  • Via CRAN: install.packages(“nome”)
  • Via Github: devtools::install_github(“nome-do-repo/nome-do-pacote”)
  • Via arquivo .zip/.tar.gz: install.packages(“C:/caminho/nome-do-pacote.zip”, repos = NULL)

Após instalados ficam na sua biblioteca e precisam ser carregados para usar as funções

  • library(nome)

Fim da primeira parte!!

Markdown

  • Pandoc: conversor de documentos gratuito e open-source
  • Arquivos tipo YALM: formato de codificação de dados

Quarto

Especificações

  • Como é um documento no markdown?
    • com foco em compartilhar scripts (não vamos abordar demais usos!)

    • https://rpubs.com/scalon/1018330

    • Vamos aprender:

      • Instalação
      • Cabeçalho tipo yaml (yet another markup language): instruções para criar seu arquivo
      • Usar a sintaxe para dar enfâse no texto e fazer títulos e subtítulos, caixas de alerta, etc
      • Inserir códigos, figuras, tabelas e equações

Exercício

Fazer um documento no Quarto utilizando todos os recursos de texto.
Nesse documento, me fale um pouco sobre você: fique à vontade para listar suas dificuldades e anseios, e também demarcar as suas qualidades e tudo que você alcançou até o momento. NÃO é um documento formal! Quero conhecer vocês! E ao mesmo tempo, quero que vocês se familiarizem com o R e com o Quarto!

Numa segunda etapa, escreva brevemente sobre seu projeto (hipóteses e objetivos), tipo de dados que foram ou serão coletados, etc. Com a sua planilha de dados coletados para o projeto, importe os dados, descreva as variáveis (use as funções ensinadas na aula para demostrar a natureza dos seus próprios dados). Se quiser pode inserir gráficos, figuras, links… Explore as possibilidades!