Neste capítulo, vamos explorar como importar, visualizar, limpar e transformar dados meteorológicos utilizando o R.
5.1 Importando dados
library(readxl)library(tidyverse)#library(dplyr)#library(tidyr)#Normais Climatológicas (1991-2020) de Temperatura Máxima#Mensal obtidas do INMETdados_nc<-read_excel("dados/TMAX_INMET.xlsx")#head(dados_nc)str(dados_nc)
tibble [190 × 16] (S3: tbl_df/tbl/data.frame)
$ Código : num [1:190] 82989 83249 82353 83007 82970 ...
$ Nome da Estação: chr [1:190] "AGUA BRANCA" "ALAGOINHAS" "ALTAMIRA" "ALTO DA BOA VISTA" ...
$ UF : chr [1:190] "AL" "BA" "PA" "RJ" ...
$ Janeiro : num [1:190] 31.1 33.1 31.6 30.2 32 30.6 33.7 31.9 30.8 28.3 ...
$ Fevereiro : num [1:190] NA 33 31.2 30.6 32 30.8 34.7 32.1 31 28.8 ...
$ Março : num [1:190] 30.7 33.1 31.3 29.1 32.2 30.9 33.7 32.5 31 28.1 ...
$ Abril : num [1:190] 29.5 31.1 31.6 27.5 32.7 30.4 32.6 33 31.5 27.8 ...
$ Maio : num [1:190] 27.2 29.2 32.1 25 33.2 29.6 30.9 32.5 32.2 26 ...
$ Junho : num [1:190] 25.1 27.7 32.9 24.3 33.3 28.6 29.8 32.5 33 25.3 ...
$ Julho : num [1:190] 24.2 27.2 NA 24.1 33.8 27.9 29.6 33.1 33.8 25.5 ...
$ Agosto : num [1:190] 25.2 27.4 34.5 24.6 35.3 27.9 31 35.4 35.1 27.6 ...
$ Setembro : num [1:190] 27.6 28.8 34.8 25.2 36.7 28.4 32.8 36.5 34.8 29 ...
$ Outubro : num [1:190] 30 30.6 34.6 26.3 35.8 29.2 34 35.4 32.9 29.4 ...
$ Novembro : num [1:190] 31.1 31.9 34 26.8 33.5 29.8 32.3 33 31.6 27.9 ...
$ Dezembro : num [1:190] 31.5 32.9 32.9 29.1 32.4 30.2 32.8 32.2 31.1 28.1 ...
$ Ano : num [1:190] NA 30.5 NA 26.9 33.6 29.5 32.3 33.3 32.4 27.7 ...
#Contar quantos valores NA existem no total# sum(is.na(dados_nc))#Verificar o número de NAs por coluna# colSums(is.na(dados_nc))#ver linhas que contêm pelo menos um NA# dados_nc |> # filter(if_any(everything(), is.na))
#Substituir (imputar) valores NA#Substituir NAs por zero# dados_preenchidos <- dados_nc |> # mutate(across(everything(), ~replace_na(.x, 0)))#Substituir NAs por média da variáveldados_preenchidos2<-dados_nc|>mutate(across(where(is.numeric), ~ifelse(is.na(.), mean(., na.rm =TRUE), .)))any(is.na(dados_preenchidos2))
[1] FALSE
5.3 Trabalhando com Linhas e Colunas
# Selecionar coluna pelo nome# dados$UF# Selecionar várias colunas por índice# dados[, c(1,3)]# Selecionar linha específica# dados[10, ]# Célula na linha 5, coluna 3#dados[5, 3]
5.4 Renomeando, criando, deletando colunas
# Renomeando colunaTMAX_INMET<-dados_nc|>rename( Estacao =`Nome da Estação`, Jan =Janeiro, Fev =Fevereiro, Mar =Março, Abr =Abril, Mai =Maio, Jun =Junho, Jul =Julho, Ago =Agosto, Set =Setembro, Out =Outubro, Nov =Novembro, Dez =Dezembro)head(TMAX_INMET)
# A tibble: 6 × 16
Código Estacao UF Jan Fev Mar Abr Mai Jun Jul Ago Set
<dbl> <chr> <chr> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
1 82989 AGUA BRANCA AL 31.1 NA 30.7 29.5 27.2 25.1 24.2 25.2 27.6
2 83249 ALAGOINHAS BA 33.1 33 33.1 31.1 29.2 27.7 27.2 27.4 28.8
3 82353 ALTAMIRA PA 31.6 31.2 31.3 31.6 32.1 32.9 NA 34.5 34.8
4 83007 ALTO DA BO… RJ 30.2 30.6 29.1 27.5 25 24.3 24.1 24.6 25.2
5 82970 ALTO PARNA… MA 32 32 32.2 32.7 33.2 33.3 33.8 35.3 36.7
6 83096 ARACAJU SE 30.6 30.8 30.9 30.4 29.6 28.6 27.9 27.9 28.4
# ℹ 4 more variables: Out <dbl>, Nov <dbl>, Dez <dbl>, Ano <dbl>
# A tibble: 6 × 5
Código Estacao UF Meses Tmax
<dbl> <chr> <chr> <chr> <dbl>
1 82989 AGUA BRANCA AL Jan 31.1
2 82989 AGUA BRANCA AL Fev NA
3 82989 AGUA BRANCA AL Mar 30.7
4 82989 AGUA BRANCA AL Abr 29.5
5 82989 AGUA BRANCA AL Mai 27.2
6 82989 AGUA BRANCA AL Jun 25.1
# Filtrando os dados UF == SP TMAX_SP<-TMAX_longer|>dplyr::filter(UF=='SP')TMAX_SP
# A tibble: 72 × 5
Código Estacao UF Meses Tmax
<dbl> <chr> <chr> <chr> <dbl>
1 83714 CAMPOS DO JORDAO SP Jan NA
2 83714 CAMPOS DO JORDAO SP Fev 23
3 83714 CAMPOS DO JORDAO SP Mar 22
4 83714 CAMPOS DO JORDAO SP Abr 20.8
5 83714 CAMPOS DO JORDAO SP Mai 18.1
6 83714 CAMPOS DO JORDAO SP Jun 17.5
7 83714 CAMPOS DO JORDAO SP Jul 17.8
8 83714 CAMPOS DO JORDAO SP Ago 19.6
9 83714 CAMPOS DO JORDAO SP Set 21
10 83714 CAMPOS DO JORDAO SP Out 21.8
# ℹ 62 more rows
#Acessando tabela dos dadosSao_Luis<-'https://raw.githubusercontent.com/IzadoraSC/ebook-intro-computacao-meteorologia/refs/heads/main/dados/dados_82564_D_1991-01-01_2020-12-31.csv'Imperatriz<-'https://raw.githubusercontent.com/IzadoraSC/ebook-intro-computacao-meteorologia/refs/heads/main/dados/dados_82564_D_1991-01-01_2020-12-31.csv'#Lendo os dadosdf_slz<-read.csv2( file =Sao_Luis, na ='null', skip =10)head(df_slz)