#Carregando pacotes
library (ggplot2)
library (rmarkdown)
library (readxl)
library (readr)
library (dplyr)
##
## Anexando pacote: 'dplyr'
## Os seguintes objetos são mascarados por 'package:stats':
##
## filter, lag
## Os seguintes objetos são mascarados por 'package:base':
##
## intersect, setdiff, setequal, union
library (tidyr)
library (lubridate)
##
## Anexando pacote: 'lubridate'
## Os seguintes objetos são mascarados por 'package:base':
##
## date, intersect, setdiff, union
dados <- read_excel("dados.xlsx")
## New names:
## • `` -> `...17`
## • `` -> `...18`
## • `` -> `...19`
glimpse(dados)
## Rows: 8,766
## Columns: 19
## $ Data <dttm> 2025-01-01, 2…
## $ `Hora UTC` <chr> "0000 UTC", "0…
## $ `PRECIPITAÇÃO TOTAL, HORÁRIO (mm)` <dbl> 0.0, 0.0, 0.0,…
## $ `PRESSAO ATMOSFERICA AO NIVEL DA ESTACAO, HORARIA (mB)` <dbl> 1011.9, 1012.0…
## $ `PRESSÃO ATMOSFERICA MAX.NA HORA ANT. (AUT) (mB)` <dbl> 1011.9, 1012.1…
## $ `PRESSÃO ATMOSFERICA MIN. NA HORA ANT. (AUT) (mB)` <dbl> 1011.4, 1011.6…
## $ `RADIACAO GLOBAL (Kj/m²)` <dbl> NA, NA, NA, NA…
## $ `TEMPERATURA DO AR - BULBO SECO, HORARIA (°C)` <dbl> 24.9, 24.7, 24…
## $ `TEMPERATURA DO PONTO DE ORVALHO (°C)` <dbl> 22.9, 22.8, 22…
## $ `TEMPERATURA MÁXIMA NA HORA ANT. (AUT) (°C)` <dbl> 25.0, 24.9, 24…
## $ `TEMPERATURA MÍNIMA NA HORA ANT. (AUT) (°C)` <dbl> 24.9, 24.7, 24…
## $ `TEMPERATURA ORVALHO MAX. NA HORA ANT. (AUT) (°C)` <dbl> 22.9, 23.0, 22…
## $ `TEMPERATURA ORVALHO MIN. NA HORA ANT. (AUT) (°C)` <dbl> 22.6, 22.8, 22…
## $ `UMIDADE REL. MAX. NA HORA ANT. (AUT) (%)` <dbl> 88, 90, 91, 92…
## $ `UMIDADE REL. MIN. NA HORA ANT. (AUT) (%)` <dbl> 87, 88, 89, 91…
## $ `UMIDADE RELATIVA DO AR, HORARIA (%)` <dbl> 88, 89, 91, 92…
## $ ...17 <lgl> NA, NA, NA, NA…
## $ ...18 <lgl> NA, NA, NA, NA…
## $ ...19 <lgl> NA, NA, NA, NA…
colnames(dados)
## [1] "Data"
## [2] "Hora UTC"
## [3] "PRECIPITAÇÃO TOTAL, HORÁRIO (mm)"
## [4] "PRESSAO ATMOSFERICA AO NIVEL DA ESTACAO, HORARIA (mB)"
## [5] "PRESSÃO ATMOSFERICA MAX.NA HORA ANT. (AUT) (mB)"
## [6] "PRESSÃO ATMOSFERICA MIN. NA HORA ANT. (AUT) (mB)"
## [7] "RADIACAO GLOBAL (Kj/m²)"
## [8] "TEMPERATURA DO AR - BULBO SECO, HORARIA (°C)"
## [9] "TEMPERATURA DO PONTO DE ORVALHO (°C)"
## [10] "TEMPERATURA MÁXIMA NA HORA ANT. (AUT) (°C)"
## [11] "TEMPERATURA MÍNIMA NA HORA ANT. (AUT) (°C)"
## [12] "TEMPERATURA ORVALHO MAX. NA HORA ANT. (AUT) (°C)"
## [13] "TEMPERATURA ORVALHO MIN. NA HORA ANT. (AUT) (°C)"
## [14] "UMIDADE REL. MAX. NA HORA ANT. (AUT) (%)"
## [15] "UMIDADE REL. MIN. NA HORA ANT. (AUT) (%)"
## [16] "UMIDADE RELATIVA DO AR, HORARIA (%)"
## [17] "...17"
## [18] "...18"
## [19] "...19"
#Ajuste das variáveis e retirando acentos e espaços
dados <- dados %>%
select(data = `Data`,
hora_utc = `Hora UTC`,
precipitacao_total = `PRECIPITAÇÃO TOTAL, HORÁRIO (mm)`,
pressao_atmosferica_ao_nivel_da_estacao = `PRESSAO ATMOSFERICA AO NIVEL DA ESTACAO, HORARIA (mB)`,
pressao_atmosferica_maxima = `PRESSÃO ATMOSFERICA MAX.NA HORA ANT. (AUT) (mB)`,
pressao_atmosferica_minima = `PRESSÃO ATMOSFERICA MIN. NA HORA ANT. (AUT) (mB)`,
radiacao_global = `RADIACAO GLOBAL (Kj/m²)`,
temperatura_do_ar = `TEMPERATURA DO AR - BULBO SECO, HORARIA (°C)`,
temperatura_do_ponto_de_arvalho = `TEMPERATURA DO PONTO DE ORVALHO (°C)`,
temperatura_maxima_na_hora_anterior = `TEMPERATURA MÁXIMA NA HORA ANT. (AUT) (°C)`,
temperatura_minima_na_hora_anterior = `TEMPERATURA MÍNIMA NA HORA ANT. (AUT) (°C)`,
temperatura_orvalho_maximo_na_hora_anterior = `TEMPERATURA ORVALHO MAX. NA HORA ANT. (AUT) (°C)`,
temperatura_orvalho_minima_na_hora_anterior = `TEMPERATURA ORVALHO MIN. NA HORA ANT. (AUT) (°C)`,
umidade_rel_maxima = `UMIDADE REL. MAX. NA HORA ANT. (AUT) (%)`,
umidade_rel_minima = `UMIDADE REL. MIN. NA HORA ANT. (AUT) (%)`,
umidade_relativa_do_ar = `UMIDADE RELATIVA DO AR, HORARIA (%)`
)
#Ajuste dos dados das colunas ####Obs: Todas as variáveis já encontram-se formatados (com caracter/número chr/num), exemplo abaixo apenas para efeito didático.
dados <- dados %>% mutate(hora_utc = as.numeric(hora_utc), ))
#Localizando NA em toda planilha
sum(is.na(dados))
## [1] 4222
#Localizando quantidade de NA por variável
summary(dados)
## data hora_utc precipitacao_total
## Min. :2025-01-01 Length:8766 Min. : 0.0000
## 1st Qu.:2025-04-02 Class :character 1st Qu.: 0.0000
## Median :2025-07-02 Mode :character Median : 0.0000
## Mean :2025-07-02 Mean : 0.1009
## 3rd Qu.:2025-10-01 3rd Qu.: 0.0000
## Max. :2025-12-31 Max. :31.6000
## NA's :6 NA's :11
## pressao_atmosferica_ao_nivel_da_estacao pressao_atmosferica_maxima
## Min. :1000 Min. :1000
## 1st Qu.:1011 1st Qu.:1011
## Median :1014 Median :1014
## Mean :1014 Mean :1015
## 3rd Qu.:1018 3rd Qu.:1018
## Max. :1027 Max. :1027
## NA's :10 NA's :12
## pressao_atmosferica_minima radiacao_global temperatura_do_ar
## Min. :1000 Min. : 0.0 Min. :11.80
## 1st Qu.:1010 1st Qu.: 404.7 1st Qu.:21.00
## Median :1014 Median :1282.7 Median :23.50
## Mean :1014 Mean :1438.7 Mean :23.73
## 3rd Qu.:1018 3rd Qu.:2322.5 3rd Qu.:26.20
## Max. :1027 Max. :4129.2 Max. :37.70
## NA's :12 NA's :4061 NA's :11
## temperatura_do_ponto_de_arvalho temperatura_maxima_na_hora_anterior
## Min. : 6.60 Min. :12.20
## 1st Qu.:17.20 1st Qu.:21.30
## Median :19.50 Median :23.90
## Mean :19.12 Mean :24.26
## 3rd Qu.:21.50 3rd Qu.:26.90
## Max. :25.20 Max. :37.90
## NA's :11 NA's :12
## temperatura_minima_na_hora_anterior
## Min. :11.50
## 1st Qu.:20.60
## Median :23.10
## Mean :23.23
## 3rd Qu.:25.70
## Max. :37.00
## NA's :12
## temperatura_orvalho_maximo_na_hora_anterior
## Min. : 8.60
## 1st Qu.:17.60
## Median :19.90
## Mean :19.57
## 3rd Qu.:21.90
## Max. :25.80
## NA's :12
## temperatura_orvalho_minima_na_hora_anterior umidade_rel_maxima
## Min. : 6.00 Min. :28.00
## 1st Qu.:16.70 1st Qu.:70.00
## Median :19.00 Median :84.00
## Mean :18.67 Mean :79.72
## 3rd Qu.:21.10 3rd Qu.:92.00
## Max. :24.60 Max. :96.00
## NA's :12 NA's :12
## umidade_rel_minima umidade_relativa_do_ar
## Min. :19.00 Min. :21.00
## 1st Qu.:61.00 1st Qu.:66.00
## Median :79.00 Median :82.00
## Mean :74.74 Mean :77.28
## 3rd Qu.:90.00 3rd Qu.:91.00
## Max. :96.00 Max. :96.00
## NA's :12 NA's :10
#Retirando todos os NA da base, onde tem “NA” será contabilizado sem valor
dados_sem_nas <- na.omit(dados)
#Estatística Básica
-Desvio Padrão -Mediana -Média -Máximo -Mínimo -Dplyr -> dataframe
estatistica_temperatura_maxima <- data.frame(media_temperatura_maxima = mean(dados$temperatura_maxima_na_hora_anterior),
mediana_temperatura_maxima = median(na.omit(dados$temperatura_maxima_na_hora_anterior)),
DESV_padrao_temperatura_maxima = sd(na.omit(dados$temperatura_maxima_na_hora_anterior)),
var_padrao_temperatura_maxima = var(na.omit(dados$temperatura_maxima_na_hora_anterior)),
max_temperatura_maxima = max(na.omit(dados$temperatura_maxima_na_hora_anterior)),
min_temperatura_maxima = min(na.omit(dados$temperatura_maxima_na_hora_anterior)))
#Gráficos #Gráfico de Colunas
data <- dados %>%
count(temperatura_maxima_na_hora_anterior, sort = TRUE)
ggplot(data, aes(y = reorder(temperatura_maxima_na_hora_anterior , n), x = n)) + geom_col() + coord_flip() +
labs (
title = "Variação de temperatura durante o ano de 2025",
x = "Temperatura",
y = "Data"
)
#Histograma
ggplot(dados, aes(x = temperatura_maxima_na_hora_anterior )) + geom_histogram(bins = 90) +
labs(
title = "Distribuição por temperatura",
x = "Temperatura",
y = "Frequência"
)
## Warning: Removed 12 rows containing non-finite outside the scale range
## (`stat_bin()`).
#Boxplot
ggplot(dados, aes(y = temperatura_maxima_na_hora_anterior)) + geom_boxplot() +
labs(
title = "Boxplot Valores de Temperatura Máxima",
y = "Dispersão"
)
## Warning: Removed 12 rows containing non-finite outside the scale range
## (`stat_boxplot()`).
#Gráfico de Linhas #Agrupar por dia do mês e somar os valores da transação
dados_filtrados <- dados %>%
filter(hora_utc == "1200 UTC") %>%
mutate(data = as.Date(data))
ggplot(dados_filtrados, aes(x = data, y = temperatura_do_ar)) +
geom_line(color = "darkblue", size = 0.8) +
labs(
title = "Evolução da Temperatura do Ar às 12:00 UTC",
x = "Data",
y = "Temperatura (°C)"
) +
theme_minimal()
## Warning: Using `size` aesthetic for lines was deprecated in ggplot2 3.4.0.
## ℹ Please use `linewidth` instead.
## This warning is displayed once per session.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.
#Gráfico de Pizza
classificacao <- dados %>%
count(temperatura_do_ar)
ggplot(classificacao, aes(x = "", y = n, fill = temperatura_do_ar)) + geom_col() +
coord_polar(theta = "y") +
labs(
title = "Frequência da temperatura do ar ao longo do ano de 2025"
)