#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

Importando uma planilha xls

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"
  )