# Nome Completo dos Alunos:
# Anna Julia Schell Yang
# Mariana Fernanda Silva Ferreira
##Parte 1 - 50% - R Básico
#Descrição do trabalho: fazer uma analise das notas de uma turma de 35 alunos de uma escola pública;
#Selecione uma amostra aleatoria de 15 alunos entre os 35 possĩveis
#Cada número gerado na amostra será considerado o identificador único de cada aluno
set.seed(123)
amostra_alunos <- sample(1:35,15)
#Calcule e imprima na tela (sem casas decimais) o % de representatividade dos 15
#em relação ao total de alunos da turma
percentual_representatividade <- length(amostra_alunos) / 35 * 100
cat("Percentual da representatividade da amostra:", round(percentual_representatividade),"%")
## Percentual da representatividade da amostra: 43 %
#As notas dadas respectivamente por aluno sorteado foram:
#150, 152, 145, 157, 167, 172, 175, 170, 165, 177, 162, 180, 160, 155, 147
#Crie um vetor com as notas da primeira avaliação.
#Nome do vetor: av1_notas
av1_notas <- c(150, 152, 145, 157, 167, 172, 175, 170, 165, 177, 162, 180, 160, 155, 147)
#Imprima na tela as notas da primeira avaliação em ordem crescente
cat("Notas da primeira avaliação em ordem crescente:", sort(av1_notas),"")
## Notas da primeira avaliação em ordem crescente: 145 147 150 152 155 157 160 162 165 167 170 172 175 177 180
#Calcule a soma e a média da avaliação 1
#Não usar a função mean()
#Nome da variavel: av1_media
soma_av1 <- sum(av1_notas)
media_av1 <- soma_av1 / length(av1_notas)
cat("Soma da avaliação 1:", soma_av1, "")
## Soma da avaliação 1: 2434
media_av1 <- round(media_av1)
#Compare as notas de cada aluno com a média da avaliação
#Imprima na tela a nota do aluno e uma das duas mensagens seguintes:
nota do aluno
# Obs: neste exercÃcio utilize FOR ou WHILE
for (i in seq_along(av1_notas)) {
if (av1_notas[i] > media_av1) {
cat("Nota do aluno", amostra_alunos[i], ":", av1_notas[i], "- acima da média\n")
} else {
cat("Nota do aluno", amostra_alunos[i], ":", av1_notas[i], "- abaixo ou igual à média\n")
}
}
## Nota do aluno 31 : 150 - abaixo ou igual à média
## Nota do aluno 15 : 152 - abaixo ou igual à média
## Nota do aluno 14 : 145 - abaixo ou igual à média
## Nota do aluno 3 : 157 - abaixo ou igual à média
## Nota do aluno 10 : 167 - acima da média
## Nota do aluno 18 : 172 - acima da média
## Nota do aluno 22 : 175 - acima da média
## Nota do aluno 11 : 170 - acima da média
## Nota do aluno 5 : 165 - acima da média
## Nota do aluno 20 : 177 - acima da média
## Nota do aluno 33 : 162 - abaixo ou igual à média
## Nota do aluno 29 : 180 - acima da média
## Nota do aluno 27 : 160 - abaixo ou igual à média
## Nota do aluno 19 : 155 - abaixo ou igual à média
## Nota do aluno 9 : 147 - abaixo ou igual à média
#Divida as notas da avaliação 1 em 3 grupos: menores que 160, entre 160 e 170 e maiores que 170
#Imprima na tela os grupos de notas
#nome das variáveis: av1_notas_grupo1, av1_notas_grupo2, av1_notas_grupo3
av1_notas_grupo1 <- av1_notas[av1_notas < 160]
av1_notas_grupo2 <- av1_notas[(av1_notas >= 160) & (av1_notas <= 170)]
av1_notas_grupo3 <- av1_notas[av1_notas > 170]
cat("Notas do Grupo 1 (menores que 160):", av1_notas_grupo1, "\n")
## Notas do Grupo 1 (menores que 160): 150 152 145 157 155 147
cat("Notas do Grupo 2 (entre 160 e 170):", av1_notas_grupo2, "\n")
## Notas do Grupo 2 (entre 160 e 170): 167 170 165 162 160
cat("Notas do Grupo 3 (maiores que 170):", av1_notas_grupo3, "\n")
## Notas do Grupo 3 (maiores que 170): 172 175 177 180
#Calcule a quantidade de notas em cada um dos grupos criados para a avaliação 1
#Nome das variáveis: av1_qtde_grupo1, av1_qtde_grupo2, av1_qtde_grupo3
av1_qtde_grupo1 <- length(av1_notas_grupo1)
av1_qtde_grupo2 <- length(av1_notas_grupo2)
av1_qtde_grupo3 <- length(av1_notas_grupo3)
#crie um vetor com as quantidades de notas de cada grupo da avaliação 1
#O nome do vetor deve ser: av1_qtde_notas_grupo1
av1_qtde_notas_grupo <- c(av1_qtde_grupo1, av1_qtde_grupo2, av1_qtde_grupo3)
#Calcule o % das quantidades de notas de cada grupo em relação a quantidade total de notas da amostra
#Nome das variaveis: av1_percentual_grupo1, av1_percentual_grupo2 e av1_percentual_grupo3
#Obs: Arrendonde para excluir as casas decimais
av1_percentual_grupo1 <- round((av1_qtde_grupo1 / length(av1_notas)) * 100)
av1_percentual_grupo2 <- round((av1_qtde_grupo2 / length(av1_notas)) * 100)
av1_percentual_grupo3 <- round((av1_qtde_grupo3 / length(av1_notas)) * 100)
#crie um vetor com o % das quantidades de notas de cada grupo da avaliação 1
#Nome da veriaveis: av1_percentual_notas_grupo
av1_percentual_notas_grupo <- c(av1_percentual_grupo1, av1_percentual_grupo2, av1_percentual_grupo3)
#crie uma matriz que mostre a quantidade de cada grupo e o % de cada grupo
#Nome da variavel: av1_matrix
av1_matrix <- matrix(c(av1_qtde_grupo1, av1_qtde_grupo2, av1_qtde_grupo3,
av1_percentual_grupo1, av1_percentual_grupo2, av1_percentual_grupo3),
ncol = 2, byrow = TRUE)
#Após um tempo, a pesquisa foi refeita com os mesmos alunos anteriormente sorteados, obedecendo rigorosamente a ordem de sorteio
#As novas notas da avaliação de cada aluno foram: 103 162 193 155 124 119 186 136 127 157 112 142 177 147 115
#Crie um vetor com as notas da avaliação 2
#Nome do vetor: av2_notas
av2_notas <- c(103, 162, 193, 155, 124, 119, 186, 136, 127, 157, 112, 142, 177, 147, 115)
#Calcule a média e a mediana da avaliação 2
#Nome da variavel: av2_media e av2_mediana
av2_media <- mean(av2_notas)
av2_mediana <- median(av2_notas)
#Compare as duas médias das duas avaliacoes e imprima qual delas é a maior
#Utilize a estrutura de IF
media_av1 <- round(media_av1)
av2_media <- mean(c(103, 162, 193, 155, 124, 119, 186, 136, 127, 157, 112, 142, 177, 147, 115))
if (media_av1 > av2_media) {
cat("A média da avaliação 1 é maior do que a média da avaliação 2.\n")
} else if (media_av1 < av2_media) {
cat("A média da avaliação 2 é maior do que a média da avaliação 1.\n")
} else {
cat("As médias das duas avaliações são iguais.\n")
}
## A média da avaliação 1 é maior do que a média da avaliação 2.
#A expectativa é que a média geral da avaliação 2 fosse 10% superior à média da avaliação 1.
#Calcule quanto seria essa média esperada
#Nome da variavel: av2_media_esperada
av2_media_esperada <- media_av1 * 1.1
#Calcule a diferença entre a média obtida e a esperada da avaliação 2
#Nome da variavel: av2_media_diff
av2_media_diff <- av2_media - av2_media_esperada
#Para cada aluno, calcule a média de suas notas e a diferença entre as notas
#da primeira avaliação e da segunda avaliação
#Armazene a diferenca em um vetor chamado av12_diferenca
av1_av2_medias <- (av1_notas + av2_notas) / 2
av12_diferenca <- av1_notas - av2_notas
#crie uma matriz contendo:
#o número de cada aluno sorteado, sua primeira nota, sua segunda nota, a amplitude entre as notas e a nota média de suas notas
#nome da variavel: tabela_aluno
num_alunos <- seq_along(av1_notas)
amplitude_notas <- av2_notas - av1_notas
tabela_aluno <- matrix(c(num_alunos, av1_notas, av2_notas, amplitude_notas, av1_av2_medias),
ncol = 5, byrow = FALSE)
#salvar a tabela_aluno em um arquivo csv
#nome do arquivo: tabela_aluno.csv
write.csv(tabela_aluno, file = "tabela_aluno.csv", row.names = FALSE)
#Crie uma função chamada 'calcular_medidas' que receba somente um vetor com as notas de uma avaliacao (1 ou 2)
#A função retornar: maior nota, menor nota, média (1 casa decimal) e amplitude das notas
#Obs: Pode usar a função mean() para calcular a média das notas do vetor
calcular_medidas <- function(notas) {
if (length(notas) == 0) {
stop("O vetor de notas está vazio.")
}
maior_nota <- max(notas)
menor_nota <- min(notas)
media_nota <- round(mean(notas), 1)
amplitude_notas <- maior_nota - menor_nota
return(c(maior_nota, menor_nota, media_nota, amplitude_notas))
}
#crie um vetor de dois elementos, sendo o número 1 representando a primeira avaliação 1 e
#o número 2, representado a segunda avaliação
#nome da variavel: avaliacao
avaliacao <- c(1, 2)
#crie uma matriz contendo:
#o número da avaliação (nome da variavel: avaliacao);
#a maior nota de cada avaliacao (nome da variavel: av12_maior);
#a menor nota de cada avaliacao (nome da variavel: av12_menor);
#a amplitude (diferenca) entre a maior e menor nota de cada avaliacao (nome da variavel: av12_amplitude);
#a media de cada avaliacao (nome da variavel: av12_media);
#nome da matriz: tabela_avaliacao
avaliacao
## [1] 1 2
av12_maior <- c(max(av1_notas),max(av2_notas))
av12_menor <- c(min(av1_notas),min(av2_notas))
av12_amplitude<-av12_maior-av12_menor
av12_media<-c(media_av1, av2_media)
tabela_avaliacao<- cbind(avaliacao, av12_maior, av12_menor, av12_amplitude, av12_media)
#salvar a tabela em um arquivo excel
#nome do arquivo: tabela_avaliacao.xlsx
install.packages("openxlsx")
## Installing package into '/cloud/lib/x86_64-pc-linux-gnu-library/4.3'
## (as 'lib' is unspecified)
# Instala a biblioteca openxlsx
if (!requireNamespace("openxlsx", quietly = TRUE)) {
install.packages("openxlsx")
}
library(openxlsx)
# Caminho do arquivo Excel
caminho_arquivo <- "tabela_avaliacao.xlsx"
# Salva a tabela_avaliacao em Excel
write.xlsx(tabela_avaliacao, caminho_arquivo)
## Parte 2 - 50% - R com EstatÃstica
#Utilizando o dataset TREES disponÃvel no R, responda as questões abaixo:
#selecione duas variáveis, elabore o gráfico de dispersão e explique o gráfico;
data(trees)
# Variáveis: Girth (circunferência) e Height (altura)
girth <- trees$Girth
height <- trees$Height
# Gráfico dispersão
plot(girth, height, main = "Gráfico de Dispersão: Circunferência vs. Altura",
xlab = "Circunferência (in)", ylab = "Altura (ft)", pch = 16, col = "blue")
#utilizando o dataset IRIS, disponivel no R
#selecione uma variável qualitativa nominal, elabore a tabela de frequencia absoluta e relativa;
#selecione uma variável quantitativa contÃnua, elabore a tabela de frequencia absoluta e relativa;
data(iris)
#Variável qualitativa nominal Species
species <- iris$Species
# Tabela frequência absoluta
tabela_freq_absoluta_species <- table(species)
print(tabela_freq_absoluta_species)
## species
## setosa versicolor virginica
## 50 50 50
# Tabela frequência relativa
tabela_freq_relativa_species <- prop.table(tabela_freq_absoluta_species)
print(tabela_freq_relativa_species)
## species
## setosa versicolor virginica
## 0.3333333 0.3333333 0.3333333
# Variável quantitativa contÃnua Petal.Length
petal_length <- iris$Petal.Length
# Tabela frequência absoluta (intervalos)
intervalos <- seq(min(petal_length), max(petal_length), by = 1)
tabela_freq_absoluta_petal_length <- cut(petal_length, breaks = intervalos, include.lowest = TRUE)
tabela_freq_absoluta_petal_length <- table(tabela_freq_absoluta_petal_length)
print(tabela_freq_absoluta_petal_length)
## tabela_freq_absoluta_petal_length
## [1,2] (2,3] (3,4] (4,5] (5,6]
## 50 1 15 42 33
# Tabela frequência relativa
tabela_freq_relativa_petal_length <- prop.table(tabela_freq_absoluta_petal_length)
print(tabela_freq_relativa_petal_length)
## tabela_freq_absoluta_petal_length
## [1,2] (2,3] (3,4] (4,5] (5,6]
## 0.354609929 0.007092199 0.106382979 0.297872340 0.234042553
#utilizando o dataset TITANIC disponivel no R, responda às questões abaixo:
#selecione uma variavel qualitativa ordinal;
#elabore um gráfico de barras
install.packages("tidyverse")
## Installing package into '/cloud/lib/x86_64-pc-linux-gnu-library/4.3'
## (as 'lib' is unspecified)
library(tidyverse)
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ dplyr 1.1.4 ✔ readr 2.1.4
## ✔ forcats 1.0.0 ✔ stringr 1.5.1
## ✔ ggplot2 3.4.4 ✔ tibble 3.2.1
## ✔ lubridate 1.9.3 ✔ tidyr 1.3.0
## ✔ purrr 1.0.2
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::lag() masks stats::lag()
## ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
library(colorspace)
# Data titanic
tb_titanic <- read_csv("http://www.populacoes.info/df/titanic.csv")
## Rows: 891 Columns: 12
## ── Column specification ────────────────────────────────────────────────────────
## Delimiter: ","
## chr (5): Name, Sex, Ticket, Cabin, Embarked
## dbl (7): PassengerId, Survived, Pclass, Age, SibSp, Parch, Fare
##
## ℹ Use `spec()` to retrieve the full column specification for this data.
## ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.
# Modificar os dados
tb_titanic %<>%
mutate(Sexo = as.factor(recode(Sex,
female = 'feminino',
male = 'masculino'))) %>%
mutate(Classe = as.factor(recode(Pclass,
`1` = '1ª classe',
`2` = '2ª classe',
`3` = '3ª classe'))) %>%
mutate(Sobreviventes = as.factor(recode(Survived,
`0` = 'faleceram',
`1` = 'sobreviveram'))) %>%
select(-c(Sex, Pclass, Survived)) %>% # Remover as colunas originais se não forem mais necessárias
rename(Sexo = Sexo, Classe = Classe, Sobreviventes = Sobreviventes)
# Grafico
spineplot(Sobreviventes ~ Classe,
data = tb_titanic,
main = "Registros de naufrágio do Navio Titanic, 1912:\nPassageiros sobreviventes por classe de embarque",
col = qualitative_hcl(2, palette = "Harmonic"))