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)

mat <- rbind(`1 Fog` = MRT_1F, `3 Fogs` = MRT_3F, `5 Fogs` = MRT_5F,
             `10 Fogs` = MRT_10F, `15 Fogs` = MRT_15F, `wo Fog` = MRT_sem_F)

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, 2))

plot(clock, MRT_1F, type = "b", pch = 8, col = "gray40",
     ylim = range(mat), xlab = "Time between Things requests (seconds)",
     ylab = "Response Time (sec)", main = "Response time by number of fogs")
lines(clock, MRT_3F, type = "b", pch = 16, col = "yellow")
lines(clock, MRT_5F, type = "b", pch = 17, col = "red")
lines(clock, MRT_10F, type = "b", pch = 2, col = "blue")
lines(clock, MRT_15F, type = "b", pch = 15, col = "purple")
lines(clock, MRT_sem_F, type = "b", pch = 4, col = "green")
legend("topright", legend = rownames(mat), pch = c(8, 16, 17, 2, 15, 4),
       col = c("gray40", "yellow", "red", "blue", "purple", "green"),
       cex = 0.8)

bar_comparison <- function(values, label) {
  barplot(rbind(MRT_sem_F, values), beside = TRUE, log = "y",
          col = c("#E6E6E6", "#666666"), names.arg = clock,
          xlab = "Time between Things requests", ylab = "Response time (s)",
          main = paste("wo Fog x", label))
  legend("topright", legend = c("wo Fog", label), fill = c("#E6E6E6", "#666666"), cex = 0.7)
}

bar_comparison(MRT_1F, "1 Fog")
bar_comparison(MRT_3F, "3 Fogs")
bar_comparison(MRT_5F, "5 Fogs")
bar_comparison(MRT_10F, "10 Fogs")
bar_comparison(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, beside = FALSE,
        col = c("#C7E9B4", "#7FCDBB", "#2C7FB8"),
        main = "Qualidade da refeição por categoria de preço",
        xlab = "Preço da refeição", ylab = "Percentual (%)")
legend("topright", legend = rownames(qualidade),
       fill = c("#C7E9B4", "#7FCDBB", "#2C7FB8"),
       title = "Quality Rating")

Questão 3

temperaturas_maio <- subset(airquality, Month == 5)$Temp
temperaturas_celsius <- (temperaturas_maio - 32) / 1.8

hist(temperaturas_celsius, probability = TRUE,
     main = "Temperaturas de maio em Celsius",
     xlab = "Temperatura (°C)", ylab = "Densidade",
     col = "lightblue", border = "white")
lines(density(temperaturas_celsius, 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)

pais_col <- names(sales)[grepl("country|país|pais", names(sales), ignore.case = TRUE)][1]
vendas_col <- names(sales)[sapply(sales, is.numeric)][1]

vendas_pais <- aggregate(sales[[vendas_col]], by = list(Pais = sales[[pais_col]]), FUN = sum)
names(vendas_pais)[2] <- "Total"
percentuais <- round(100 * vendas_pais$Total / sum(vendas_pais$Total), 1)
rotulos <- paste0(percentuais, "%")
cores <- rainbow(nrow(vendas_pais))

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

Questão 5

boxplot(count ~ spray, data = InsectSprays, outline = FALSE, col = "yellow",
        main = "Contagem de insetos por 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., ]", "", x))
  ifelse(unidade == "TB", valor * 1000000,
         ifelse(unidade == "GB", valor * 1024, valor))
}

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

none <- preparar_monitoramento("monitoringCloudData_NONE.csv")
w01 <- preparar_monitoramento("monitoringCloudData_0.1.csv")
w05 <- preparar_monitoramento("monitoringCloudData_0.5.csv")
w10 <- preparar_monitoramento("monitoringCloudData_1.csv")

layout(matrix(1:4, nrow = 2, byrow = TRUE))
par(mar = c(4, 4, 3, 1))

plot(none$tempo_horas, none$usedMemoryMB, type = "l",
     main = "Memory Analysis (None Workload)",
     xlab = "Time (hour)", ylab = "Used Memory (MB)")
plot(w01$tempo_horas, w01$usedMemoryMB, type = "l",
     main = "Memory Analysis (Workload of 0.1)",
     xlab = "Time (hour)", ylab = "Used Memory (MB)")
plot(w05$tempo_horas, w05$usedMemoryMB, type = "l",
     main = "Memory Analysis (Workload of 0.5)",
     xlab = "Time (hour)", ylab = "Used Memory (MB)")
plot(w10$tempo_horas, w10$usedMemoryMB, type = "l",
     main = "Memory Analysis (Workload of 1.0)",
     xlab = "Time (hour)", ylab = "Used Memory (MB)")

Questão 7

library(plotly)

netflix <- read.csv("netflix_titles.csv", stringsAsFactors = FALSE)
netflix_um_pais <- subset(netflix, !is.na(country) & country != "" & !grepl(",", country))
top10_paises <- sort(table(netflix_um_pais$country), decreasing = TRUE)[1:10]
dados_paises <- data.frame(Pais = names(top10_paises), Total = as.numeric(top10_paises))

plot_ly(dados_paises, labels = ~Pais, values = ~Total, type = "pie") %>%
  layout(title = "Top 10 países com mais conteúdos na Netflix")

Questão 8

plot_ly(
  type = "table",
  header = list(values = c("País", "Total de conteúdos"),
                fill = list(color = "gray"),
                font = list(color = "white"),
                align = "center"),
  cells = list(values = list(dados_paises$Pais, dados_paises$Total),
               align = "center")
)

Questão 9

netflix$decada <- floor(netflix$release_year / 10) * 10
conteudo_decada <- as.data.frame(table(netflix$decada, netflix$type))
names(conteudo_decada) <- c("Decada", "Tipo", "Quantidade")
conteudo_decada$Decada <- as.numeric(as.character(conteudo_decada$Decada))

series <- subset(conteudo_decada, Tipo == "TV Show")
filmes <- subset(conteudo_decada, Tipo == "Movie")

plot_ly() %>%
  add_trace(data = series, x = ~Decada, y = ~Quantidade, type = "scatter",
            mode = "lines+markers", name = "TV Series",
            line = list(color = "blue")) %>%
  add_trace(data = filmes, x = ~Decada, y = ~Quantidade, type = "scatter",
            mode = "lines+markers", name = "Movies",
            line = list(color = "yellow")) %>%
  layout(title = "Quantidade de conteúdos por década",
         xaxis = list(title = "Década"),
         yaxis = list(title = "Qtd. Conteúdo"))

Questão 10

filmes_2000_2010 <- subset(netflix, type == "Movie" & release_year >= 2000 & release_year <= 2010)
filmes_2000_2010$genero_principal <- trimws(sub(",.*", "", filmes_2000_2010$listed_in))
generos <- c("Dramas", "Action & Adventure", "Comedies")
dados_generos <- subset(filmes_2000_2010, genero_principal %in% generos)

tab_generos <- as.data.frame(table(dados_generos$release_year, dados_generos$genero_principal))
names(tab_generos) <- c("Ano", "Genero", "Quantidade")
tab_generos$Ano <- as.numeric(as.character(tab_generos$Ano))

plot_ly(tab_generos, x = ~Ano, y = ~Quantidade, color = ~Genero,
        type = "bar", colors = c("blue", "orange", "green")) %>%
  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")