knitr::opts_chunk$set(echo = TRUE)

Questão 1

MRT_1F <- c(517.1468515630205, 85.13094142168089, 30.333207896694553, 12.694776264558937, 3.3041601673945418, 1.1823111717498882, 1.1892293502386786)
MRT_3F <- c(156.68929936163462, 11.540837783562276, 0.4512835621696538, 0.4509797929766453, 0.4502068233039181, 0.4496185276300172, 0.4543157082191288)
MRT_5F <- c(83.90319666471157, 0.3068151086494968, 0.30522314133037304, 0.3072588968084928, 0.30655265997285697, 0.3055812715727718, 0.3053297166713006)
MRT_10F <- c(29.55430642951759, 0.19832832665772515, 0.1971923924717474, 0.19796648905716516, 0.19615594370806338, 0.2034569237883263, 0.19617420889447737)
MRT_15F <- c(11.317736530583566, 0.167364215666193, 0.16172168266811013, 0.16701085329580515, 0.1598052657153692, 0.1645934043532696, 0.16216563797118075)
MRT_sem_F <- c(11.93430909937736, 0.6095414637034009, 0.6060645101029295, 0.612167181646899, 0.6146761002685637, 0.6096747087200697, 0.6125810476877268)
clock <- c(0.1, 0.5, 1, 1.5, 2, 2.5, 3)

layout_matrix <- matrix(c(1, 2), nrow = 1, ncol = 2, byrow = TRUE)
layout(layout_matrix, widths = c(2, 1))

par(mar = c(5, 4, 4, 1))
plot(clock, MRT_1F, type = "l", lwd = 2, col = "blue", main = "Evolução de MRT_1F ao Longo do Clock", xlab = "Clock (horas)", ylab = "Valor MRT_1F", ylim = c(0, max(MRT_1F)))
points(clock, MRT_1F, pch=19, col="blue")

par(mar = c(5, 4, 4, 2))
valores_iniciais <- c(MRT_1F[1], MRT_3F[1], MRT_5F[1], MRT_10F[1], MRT_15F[1], MRT_sem_F[1])
cores_barras <- c("#E6E6E6", "#666666", "#E6E6E6", "#666666", "#E6E6E6", "#666666")
barplot(valores_iniciais, log = "y", col = cores_barras, main = "Valores Iniciais por Fator (Escala Log Y)", xlab = "Fator MRT", ylab = "Valor (escala log)", names.arg = c("1F", "3F", "5F", "10F", "15F", "sem F"), las = 1, cex.names = 0.8)

layout(1)

Questão 2

precos <- c("Baixo", "Médio", "Alto")
qualidade <- c("Boa", "Regular", "Ruim")
dados <- matrix(c(10, 6, 2,    # Boa
                  4, 7, 3,     # Regular
                  1, 3, 8),    # Ruim
                nrow = 3,
                byrow = FALSE)
colnames(dados) <- qualidade
rownames(dados) <- precos

barplot(t(dados),
        beside = FALSE,
        col = c("#4CAF50", "#FFC107", "#F44336"),
        main = "Qualidade da Refeição por Faixa de Preço",
        xlab = "Faixa de Preço",
        ylab = "Número de Avaliações",
        legend.text = qualidade,
        args.legend = list(x = "topright", inset = 0.05))

Questão 3

maio <- subset(airquality, Month == 5)
maio$Temp_C <- (maio$Temp - 32) / 1.8
hist(maio$Temp_C,
     breaks = 8,
     col = "skyblue",
     main = "Histograma das Temperaturas (Maio) em Celsius",
     xlab = "Temperatura (°C)",
     ylab = "Frequência",
     probability = TRUE)
lines(density(maio$Temp_C, na.rm = TRUE),
      col = "red",
      lwd = 2)

Questão 4

sales <- read.table("https://training-course-material.com/images/8/8f/Sales.txt", header=TRUE)
vendas_por_pais <- tapply(sales$SALES, sales$COUNTRY, sum)
porcentagem <- round(100 * vendas_por_pais / sum(vendas_por_pais), 1)
cores_fatias <- c("#4FC3F7", "#81C784", "#BA68C8", "#FFB74D", "#A1887F", "#E57373", "#FFF176")
pie(vendas_por_pais,
    labels = paste(names(vendas_por_pais), "-", porcentagem, "%"),
    col = cores_fatias,
    main = "Porcentagem de Vendas por País",
    clockwise = TRUE)
legend("topright",
       legend=names(vendas_por_pais),
       fill=cores_fatias[1:length(vendas_por_pais)],
       title="País")

Questão 5

library(ggplot2)
## Warning: pacote 'ggplot2' foi compilado no R versão 4.5.2
data(InsectSprays)
ggplot(InsectSprays, aes(x= spray, y= count)) +
  geom_boxplot(outlier.shape = NA, fill = "yellow") +
  labs(
    title = "Contagem de Insetos por Tipo de Inseticida",
    x = "Tipo de Inseticida",
    y = "Contagem de Insetos"
  )

Questão 6

library(stringr)

arquivos <- c(
  "C:/Users/julio/Downloads/monitoringCloudData/monitoringCloudData_1.csv", 
  "C:/Users/julio/Downloads/monitoringCloudData/monitoringCloudData_0.5.csv", 
  "C:/Users/julio/Downloads/monitoringCloudData/monitoringCloudData_0.1.csv", 
  "C:/Users/julio/Downloads/monitoringCloudData/monitoringCloudData_NONE.csv"
)
titulos <- c("1", "0.5", "0.1", "NONE")
cores <- c("#1565C0", "#2E7D32", "#D84315", "#6A1B9A")

ajusta_memoria <- function(x) {
  x <- trimws(x)
  valor <- as.numeric(str_extract(x, "[0-9.]+"))
  unidade <- toupper(str_extract(x, "[A-Za-z]+"))
  if (is.na(unidade)) unidade <- "MB"
  if (unidade == "MB") return(valor)
  if (unidade == "GB") return(valor * 1024)
  if (unidade == "TB") return(valor * 1000000)
  return(valor)
}

layout(matrix(1:4, nrow=2, byrow=TRUE))
par(mar=c(5,4,4,2))
for (i in 1:4) {
  dados <- read.csv(arquivos[i], stringsAsFactors=FALSE)
  tempo_horas <- as.numeric(difftime(dados$currentTime, dados$currentTime[1], units="hours"))
  memoria_mb <- sapply(dados$usedMemory, ajusta_memoria)
  plot(tempo_horas, memoria_mb, 
       type="l", lwd=2, col=cores[i],
       main=paste("Memória Usada ao Longo do Tempo -", titulos[i]),
       xlab="Tempo de Monitoramento (horas)",
       ylab="Memória Usada (MB)")
}

layout(1)

Questão 7

library(plotly)
## Warning: pacote 'plotly' foi compilado no R versão 4.5.2
## 
## Anexando pacote: 'plotly'
## O seguinte objeto é mascarado por 'package:ggplot2':
## 
##     last_plot
## O seguinte objeto é mascarado por 'package:stats':
## 
##     filter
## O seguinte objeto é mascarado por 'package:graphics':
## 
##     layout
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
netflix <- read.csv("C:/Users/julio/Downloads/netflix_titles.csv", stringsAsFactors=FALSE)
netflix_filtrado <- subset(netflix, !is.na(country) & !grepl(",", country))
paises <- netflix_filtrado %>% 
  group_by(country) %>% 
  summarise(conteudo=n()) %>% 
  arrange(desc(conteudo)) %>% 
  slice(1:10)
plot_ly(data = paises, labels = ~country, values = ~conteudo, type = "pie",
         textinfo="label+percent",
         insidetextorientation = "radial",
         marker = list(colors = c("#4FC3F7", "#81C784", "#BA68C8", "#FFB74D", "#A1887F", "#E57373", "#FFF176", "#1976D2", "#FF4081", "#009688"))) %>%
  layout(title = "Top 10 Países - Netflix em 2019")

Questão 8

library(plotly)
library(dplyr)
netflix <- read.csv("C:/Users/julio/Downloads/netflix_titles.csv", stringsAsFactors=FALSE)
netflix_filtrado <- subset(netflix, !is.na(country) & !grepl(",", country))
paises <- netflix_filtrado %>% 
  group_by(country) %>% 
  summarise(conteudo=n()) %>% 
  arrange(desc(conteudo)) %>% 
  slice(1:10)
plot_ly(
  type = 'table',
  header = list(
    values = c('<b>País</b>', '<b>Total de conteúdos</b>'),
    align = c('center', 'center'),
    fill = list(color = '#616161'),
    font = list(color = 'white', size = 14)
  ),
  cells = list(
    values = list(paises$country, paises$conteudo),
    align = c('center', 'center'),
    fill = list(color = 'white'),
    font = list(color = 'black', size = 12)
  )
)

Questão 9

library(dplyr)
library(plotly)

netflix <- read.csv("C:/Users/julio/Downloads/netflix_titles.csv", stringsAsFactors=FALSE)
netflix <- netflix %>% filter(!is.na(release_year), !is.na(type))

netflix$decada <- floor(netflix$release_year / 10) * 10

decadas_plot <- netflix %>% 
  group_by(type, decada) %>% 
  summarise(qtd = n(), .groups="drop") %>% 
  filter(type %in% c("Movie", "TV Show"))

plot_ly(decadas_plot, x = ~decada, y = ~qtd, color = ~type, colors = c("#1976D2", "#FFD600"),
        type = 'scatter', mode = 'lines+markers',
        text = ~paste("Década:", decada, "<br>Qtd:", qtd),
        hoverinfo = 'text') %>%
  layout(title = "Quantidade de Conteúdos por Década na Netflix",
         xaxis = list(title = "Década", dtick = 10),
         yaxis = list(title = "Quantidade de Conteúdos"),
         legend = list(title = list(text = 'Tipo')))

Questão 10

library(plotly)
library(dplyr)
netflix <- read.csv("C:/Users/julio/Downloads/netflix_titles.csv", stringsAsFactors=FALSE)
netflix <- netflix %>% filter(!is.na(release_year), !is.na(type))
netflix$decada <- floor(netflix$release_year / 10) * 10
conteudo_decada <- netflix %>% 
  filter(type %in% c("Movie","TV Show")) %>%
  group_by(type, decada) %>%
  summarise(total = n(), .groups = "drop")
dados_wide <- tidyr::pivot_wider(conteudo_decada, names_from = type, values_from = total, values_fill = 0)
plot_ly(dados_wide, x = ~decada, y = ~`TV Show`, type = 'bar', name = 'Séries', marker = list(color = '#1976D2')) %>%
  add_trace(y = ~Movie, name = 'Filmes', marker = list(color = '#FFD600')) %>%
  layout(title = 'Quantidade de Filmes e Séries por Década',
         xaxis = list(title = 'Década', dtick = 10),
         yaxis = list(title = 'Quantidade de Conteúdos'),
         barmode = 'group',
         legend = list(title = list(text = 'Tipo')))