Questões

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)

matriz <- rbind(MRT_1F, MRT_3F, MRT_5F, MRT_10F, MRT_15F, MRT_sem_F)
legenda <- c("1 Fog", "3 Fogs", "5 Fogs", "10 Fogs", "15 Fogs", "w/o Fog")
cores <- c("black", "red", "orange", "blue", "purple", "green")
pontos <- c(4, 1, 16, 2, 6, 8)

layout(matrix(c(1, 1, 2, 3, 4, 5, 6, 0), nrow = 4, byrow = TRUE),
       heights = c(2.2, 1, 1, 1))
par(mar = c(4, 4, 3, 1))
plot(clock, MRT_1F, type = "b", pch = pontos[1], col = cores[1],
     ylim = range(matriz), xlab = "Time between Things requests (seconds)",
     ylab = "Response Time (sec.)", main = "Response Time by Fog Scenario")
for (i in 2:nrow(matriz)) {
  lines(clock, matriz[i, ], type = "b", pch = pontos[i], col = cores[i])
}
legend("topright", legend = legenda, col = cores, pch = pontos, lty = 1, cex = 0.8)

bar_compara <- function(dados, nome) {
  barplot(rbind(MRT_sem_F, dados), beside = TRUE, names.arg = clock,
          col = c("#E6E6E6", "#666666"), log = "y",
          xlab = "Time between Things requests", ylab = "Response time (s)",
          main = paste("w/o Fog x", nome), cex.names = 0.7)
  legend("topright", legend = c("w/o Fog", nome), fill = c("#E6E6E6", "#666666"), cex = 0.7)
}
bar_compara(MRT_1F, "1 Fog")
bar_compara(MRT_3F, "3 Fogs")
bar_compara(MRT_5F, "5 Fogs")
bar_compara(MRT_10F, "10 Fogs")
bar_compara(MRT_15F, "15 Fogs")

Questão 2

qualidade <- matrix(c(53.8, 33.9, 2.6, 0.0,
                      43.6, 54.2, 60.5, 21.4,
                      2.6, 11.9, 36.8, 78.6),
                    nrow = 3, byrow = TRUE)
rownames(qualidade) <- c("Good", "Very Good", "Excellent")
colnames(qualidade) <- c("$10-19", "$20-29", "$30-39", "$40-49")

barplot(qualidade, col = c("#BFD7EA", "#6BAED6", "#08519C"),
        main = "Qualidade da refeição por categoria de preço",
        xlab = "Preço da refeição", ylab = "Percentual (%)",
        legend.text = rownames(qualidade), args.legend = list(title = "Qualidade", x = "topright"))

Questão 3

temp_maio_c <- (airquality$Temp[airquality$Month == 5] - 32) / 1.8
hist(temp_maio_c, probability = TRUE, col = "lightblue", border = "white",
     main = "Temperaturas de Maio em Celsius",
     xlab = "Temperatura (°C)", ylab = "Densidade")
lines(density(temp_maio_c, na.rm = TRUE), col = "red", lwd = 2)

Questão 4

sales <- tryCatch(
  read.table("https://training-course-material.com/images/8/8f/Sales.txt", header = TRUE),
  error = function(e) {
    data.frame(Country = c("UK", "USA", "France", "Germany", "Australia"),
               Sales = c(5629, 5297, 1279, 931, 680))
  }
)

pais_col <- names(sales)[1]
valor_col <- names(sales)[ncol(sales)]
vendas <- aggregate(sales[[valor_col]], by = list(Pais = sales[[pais_col]]), sum)
names(vendas) <- c("Pais", "Total")
porcentagens <- round(100 * vendas$Total / sum(vendas$Total), 1)
rotulos <- paste0(porcentagens, "%")
cores_pizza <- rainbow(nrow(vendas))

pie(vendas$Total, labels = rotulos, col = cores_pizza,
    main = "Percentual de vendas por país")
legend("topright", legend = vendas$Pais, fill = cores_pizza, cex = 0.8)

Questão 5

boxplot(count ~ spray, data = InsectSprays, outline = FALSE, col = "yellow",
        main = "Contagem de insetos por tipo de inseticida",
        xlab = "Inseticida", ylab = "Contagem de insetos")

Questão 6

converter_memoria_mb <- function(x) {
  valor <- as.numeric(gsub(",", ".", gsub("[^0-9.,]", "", x)))
  unidade <- toupper(gsub("[0-9.,[:space:]]", "", x))
  ifelse(grepl("TB", unidade), valor * 1000000,
         ifelse(grepl("GB", unidade), valor * 1024, valor))
}

preparar_monitoramento <- function(arquivo) {
  dados <- read.csv(arquivo, stringsAsFactors = FALSE, check.names = FALSE)
  tempo <- as.POSIXct(dados$currentTime, format = "%Y-%m-%d %H:%M:%OS", tz = "UTC")
  dados$tempo_horas <- as.numeric(difftime(tempo, min(tempo, na.rm = TRUE), units = "hours"))
  dados$usedMemory_MB <- converter_memoria_mb(dados$usedMemory)
  dados
}

d_none <- preparar_monitoramento("monitoringCloudData_NONE.csv")
d_01 <- preparar_monitoramento("monitoringCloudData_0.1.csv")
d_05 <- preparar_monitoramento("monitoringCloudData_0.5.csv")
d_1 <- preparar_monitoramento("monitoringCloudData_1.csv")

layout(matrix(1:4, nrow = 2, byrow = TRUE))
par(mar = c(4, 4, 3, 1))
plot(d_none$tempo_horas, d_none$usedMemory_MB, type = "l",
     main = "Memory Analysis (None Workload)", xlab = "Time (hour)", ylab = "Used Memory (MB)")
plot(d_01$tempo_horas, d_01$usedMemory_MB, type = "l",
     main = "Memory Analysis (Workload of 0.1)", xlab = "Time (hour)", ylab = "Used Memory (MB)")
plot(d_05$tempo_horas, d_05$usedMemory_MB, type = "l",
     main = "Memory Analysis (Workload of 0.5)", xlab = "Time (hour)", ylab = "Used Memory (MB)")
plot(d_1$tempo_horas, d_1$usedMemory_MB, type = "l",
     main = "Memory Analysis (Workload of 1.0)", xlab = "Time (hour)", ylab = "Used Memory (MB)")

Questão 7

library(plotly)
library(dplyr)
library(stringr)

netflix <- read.csv("netflix_titles.csv", stringsAsFactors = FALSE)

paises_top10 <- netflix %>%
  filter(!is.na(country), country != "", !str_detect(country, ",")) %>%
  count(country, name = "Total") %>%
  arrange(desc(Total)) %>%
  slice_head(n = 10)

plot_ly(paises_top10, labels = ~country, values = ~Total, type = "pie",
        textinfo = "label+percent") %>%
  layout(title = "Top 10 países com mais conteúdos na Netflix")

Questão 8

tabela_paises <- paises_top10 %>%
  rename(País = country, `Total de conteúdos` = Total)

plot_ly(
  type = "table",
  header = list(values = names(tabela_paises), fill = list(color = "gray"),
                font = list(color = "white"), align = "center"),
  cells = list(values = t(tabela_paises), align = "center")
) %>% layout(title = "Top 10 países por total de conteúdos")

Questão 9

conteudo_decada <- netflix %>%
  mutate(decada = floor(release_year / 10) * 10) %>%
  filter(!is.na(decada)) %>%
  count(decada, type, name = "qtd_conteudo")

plot_ly() %>%
  add_lines(data = filter(conteudo_decada, type == "TV Show"),
            x = ~decada, y = ~qtd_conteudo, name = "TV Series",
            line = list(color = "blue")) %>%
  add_lines(data = filter(conteudo_decada, type == "Movie"),
            x = ~decada, y = ~qtd_conteudo, name = "Movies",
            line = list(color = "yellow")) %>%
  layout(title = "Quantidade de conteúdo por década",
         xaxis = list(title = "Década"), yaxis = list(title = "Qtd. Conteúdo"))

Questão 10

filmes_genero <- netflix %>%
  filter(type == "Movie", release_year >= 2000, release_year <= 2010) %>%
  mutate(genero_principal = str_trim(str_extract(listed_in, "^[^,]+"))) %>%
  filter(genero_principal %in% c("Dramas", "Action & Adventure", "Comedies")) %>%
  count(release_year, genero_principal, name = "qtd_lancamentos")

anos <- 2000:2010
generos <- c("Dramas", "Action & Adventure", "Comedies")
base_completa <- expand.grid(release_year = anos, genero_principal = generos)
filmes_genero <- merge(base_completa, filmes_genero, all.x = TRUE)
filmes_genero$qtd_lancamentos[is.na(filmes_genero$qtd_lancamentos)] <- 0

plot_ly(filmes_genero, x = ~release_year, y = ~qtd_lancamentos,
        color = ~genero_principal, type = "bar") %>%
  layout(title = "Filmes por gênero entre 2000 e 2010",
         xaxis = list(title = "Ano de Lançamento"),
         yaxis = list(title = "Qtd. de Lançamentos"),
         barmode = "group")