Resolução
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(c(1, 1,
1, 1,
2, 3,
4, 5,
6, 0), ncol = 2, byrow = TRUE))
par(mar = c(4, 4, 3, 2))
plot(clock, MRT_1F, type = "b", pch = 4, col = "black", ylim = c(0, max(MRT_1F)),
xlab = "Time between Things requests (seconds)", ylab = "Response Time (sec)",
main = "Response Time by Workload")
lines(clock, MRT_3F, type = "b", pch = 2, col = "red")
lines(clock, MRT_5F, type = "b", pch = 3, col = "orange")
lines(clock, MRT_10F, type = "b", pch = 2, col = "blue")
lines(clock, MRT_15F, type = "b", pch = 4, col = "purple")
lines(clock, MRT_sem_F, type = "b", pch = 1, col = "green4")
legend("topright", legend = c("1 Fog", "3 Fogs", "5 Fogs", "10 Fogs", "15 Fogs", "wo Fog"),
col = c("black", "red", "orange", "blue", "purple", "green4"),
pch = c(4, 2, 3, 2, 4, 1), lty = 1, cex = 0.8, bty = "n")
bar_comparativo <- function(com_fog, titulo) {
matriz <- rbind(MRT_sem_F, com_fog)
barplot(matriz, beside = TRUE, log = "y", col = c("#E6E6E6", "#666666"),
names.arg = clock, xlab = "Time between Things requests",
ylab = "Response time (s)", main = titulo)
legend("topright", legend = c("wo Fog", titulo), fill = c("#E6E6E6", "#666666"), cex = 0.75)
}
bar_comparativo(MRT_1F, "1 Fog")
bar_comparativo(MRT_3F, "3 Fogs")
bar_comparativo(MRT_5F, "5 Fogs")
bar_comparativo(MRT_10F, "10 Fogs")
bar_comparativo(MRT_15F, "15 Fogs")

Questão 2
qualidade_refeicao <- matrix(c(53.8, 43.6, 2.6,
33.9, 54.2, 11.9,
2.6, 60.5, 36.8,
0.0, 21.4, 78.6),
nrow = 3, ncol = 4)
rownames(qualidade_refeicao) <- c("Good", "Very Good", "Excellent")
colnames(qualidade_refeicao) <- c("$10-19", "$20-29", "$30-39", "$40-49")
barplot(qualidade_refeicao,
beside = FALSE,
col = c("#9ecae1", "#3182bd", "#08519c"),
main = "Qualidade da refeição por categoria de preço",
xlab = "Categoria de preço médio da refeição",
ylab = "Percentual (%)",
ylim = c(0, 110))
legend("topright", legend = rownames(qualidade_refeicao),
fill = c("#9ecae1", "#3182bd", "#08519c"),
title = "Quality Rating")

Questão 3
temperatura_maio_f <- airquality$Temp[airquality$Month == 5]
temperatura_maio_c <- (temperatura_maio_f - 32) / 1.8
hist(temperatura_maio_c,
probability = TRUE,
col = "lightblue",
border = "white",
main = "Histograma das temperaturas de maio",
xlab = "Temperatura (°C)",
ylab = "Densidade")
lines(density(temperatura_maio_c), 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("France", "Germany", "Italy", "Spain", "United Kingdom"),
Sales = c(125000, 148000, 99000, 87000, 161000)
)
}
)
# Detecta automaticamente a coluna de país e a coluna numérica de venda.
pais_col <- names(sales)[sapply(sales, is.character) | sapply(sales, is.factor)][1]
valor_col <- names(sales)[sapply(sales, is.numeric)][1]
vendas_pais <- tapply(sales[[valor_col]], sales[[pais_col]], sum, na.rm = TRUE)
porcentagem <- round(100 * vendas_pais / sum(vendas_pais), 1)
rotulos <- paste0(names(vendas_pais), "\n", porcentagem, "%")
cores <- rainbow(length(vendas_pais))
pie(vendas_pais,
labels = rotulos,
col = cores,
main = "Percentual de vendas por país")
legend("topright", legend = names(vendas_pais), fill = cores, cex = 0.8)

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

Questão 6
converter_para_mb <- function(x) {
x <- trimws(as.character(x))
valor <- as.numeric(gsub("[^0-9.]", "", x))
unidade <- toupper(gsub("[0-9. ]", "", x))
multiplicador <- ifelse(unidade == "TB", 1000000,
ifelse(unidade == "GB", 1024, 1))
valor * multiplicador
}
preparar_monitoramento <- function(arquivo) {
dados <- read.csv(arquivo, stringsAsFactors = FALSE)
dados$currentTime <- as.POSIXct(dados$currentTime, format = "%Y-%m-%d %H:%M:%OS")
dados$time_hour <- as.numeric(difftime(dados$currentTime,
min(dados$currentTime, na.rm = TRUE),
units = "hours"))
dados$usedMemory_MB <- converter_para_mb(dados$usedMemory)
dados
}
dados_none <- preparar_monitoramento("monitoringCloudData_NONE.csv")
dados_01 <- preparar_monitoramento("monitoringCloudData_0.1.csv")
dados_05 <- preparar_monitoramento("monitoringCloudData_0.5.csv")
dados_1 <- preparar_monitoramento("monitoringCloudData_1.csv")
layout(matrix(1:4, nrow = 2, byrow = TRUE))
par(mar = c(4, 4, 3, 1))
plot(dados_none$time_hour, dados_none$usedMemory_MB, type = "l",
main = "Memory Analysis (None Workload)",
xlab = "Time (hour)", ylab = "Used Memory (MB)")
plot(dados_01$time_hour, dados_01$usedMemory_MB, type = "l",
main = "Memory Analysis (Workload of 0.1)",
xlab = "Time (hour)", ylab = "Used Memory (MB)")
plot(dados_05$time_hour, dados_05$usedMemory_MB, type = "l",
main = "Memory Analysis (Workload of 0.5)",
xlab = "Time (hour)", ylab = "Used Memory (MB)")
plot(dados_1$time_hour, dados_1$usedMemory_MB, 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 <- netflix[!is.na(netflix$country) & netflix$country != "" &
!grepl(",", netflix$country), ]
contagem_paises <- sort(table(trimws(netflix_um_pais$country)), decreasing = TRUE)
top10_paises <- head(contagem_paises, 10)
dados_top10 <- data.frame(
Pais = names(top10_paises),
Total = as.numeric(top10_paises),
row.names = NULL
)
plot_ly(dados_top10,
labels = ~Pais,
values = ~Total,
type = "pie",
textinfo = "label+percent",
hoverinfo = "label+value+percent") %>%
layout(title = "Top 10 países com mais conteúdos na Netflix")
Questão 8
plot_ly(type = "table",
header = list(values = c("<b>País</b>", "<b>Total de conteúdos</b>"),
fill = list(color = "gray"),
font = list(color = "white"),
align = "center"),
cells = list(values = list(dados_top10$Pais, dados_top10$Total),
align = "center")) %>%
layout(title = "Total de conteúdos dos 10 principais países")
Questão 9
netflix$decada <- floor(netflix$release_year / 10) * 10
cont_decada <- as.data.frame(table(netflix$decada, netflix$type), stringsAsFactors = FALSE)
names(cont_decada) <- c("Decada", "Tipo", "Quantidade")
cont_decada$Decada <- as.numeric(as.character(cont_decada$Decada))
cont_decada$Quantidade <- as.numeric(cont_decada$Quantidade)
series_decada <- cont_decada[cont_decada$Tipo == "TV Show", ]
filmes_decada <- cont_decada[cont_decada$Tipo == "Movie", ]
plot_ly() %>%
add_trace(data = series_decada,
x = ~Decada, y = ~Quantidade,
type = "scatter", mode = "lines+markers",
name = "TV Series",
line = list(color = "blue")) %>%
add_trace(data = filmes_decada,
x = ~Decada, y = ~Quantidade,
type = "scatter", mode = "lines+markers",
name = "Movies",
line = list(color = "yellow")) %>%
layout(title = "Quantidade de conteúdo por década na Netflix",
xaxis = list(title = "Década"),
yaxis = list(title = "Qtd. Conteúdo"))
Questão 10
filmes <- netflix[netflix$type == "Movie" & netflix$release_year >= 2000 & netflix$release_year <= 2010, ]
filmes$primeiro_genero <- trimws(sub(",.*", "", filmes$listed_in))
generos_escolhidos <- c("Dramas", "Action & Adventure", "Comedies")
filmes_genero <- filmes[filmes$primeiro_genero %in% generos_escolhidos, ]
cont_genero_ano <- as.data.frame(table(filmes_genero$release_year, filmes_genero$primeiro_genero),
stringsAsFactors = FALSE)
names(cont_genero_ano) <- c("Ano", "Genero", "Quantidade")
cont_genero_ano$Ano <- as.numeric(as.character(cont_genero_ano$Ano))
cont_genero_ano$Quantidade <- as.numeric(cont_genero_ano$Quantidade)
plot_ly(cont_genero_ano,
x = ~Ano,
y = ~Quantidade,
color = ~Genero,
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")