setwd("C:/Users/USER/Desktop/Pós-Graduação - Data Science/Módulo II/Testes") # Definir Directório / Ambiente de Trabalho

library(readr) # Carregar a Biblioteca

library(readxl) # Carregar a Biblioteca

library(rmarkdown)

Considere o conjunto de dados constante do ficheiro Sleep. Acesse o ficheiro clicando AQUI.

Exercício 1

Importe os dados para o R e transforme numa data.frame se necessário. No R altere o nome da base de dados lida para DADOS.

Base0 = read_csv("Sleep.csv")  # Base de Dados

paged_table(Base0) # Visualizar a Base de Dados Importado
DADOS = as.data.frame(Base0) # Renomear a Base de Dados e Transformá-lo em data.frame

Exercício 2

Indique o que significa DADOS[10, ].

paged_table(DADOS[10,])

Este comando/função possibilita a Visualização do elemeneto na 10ª linha da matriz DADOS. Assim, a função retorna informações do 10º indivíduo.

Exercício 3

Identifique os diferentes níveis da variável ‘BMI_Category’.

str(DADOS$`BMI Category`) # Visualizar a estutuda da variável
##  chr [1:374] "Overweight" "Normal" "Normal" "Obese" "Obese" "Obese" "Obese" ...
# Como a variável é uma String temos de o transformar em data.frame

BMICat = as.factor(DADOS$`BMI Category`) # Transformá-lo em factor

levels(BMICat) #  Exibir as categorias em níveis.
## [1] "Normal"        "Normal Weight" "Obese"         "Overweight"

Exercício 4

Obtenha uma tabela com as frequências absolutas y as frequências relativas acumuladas da variável Stress_Level.

Selecione um resultado de cada frequência que lhe pareça interessante comentar e interprete-os.

Tabela = table(DADOS$`Stress Level`)

Dist.Freq = cbind(Freq=Tabela,
                  Freq.rel.acum=cumsum(prop.table(Tabela)))

Dist.Freq # Tabela de Distribuição de Frequencias
##   Freq Freq.rel.acum
## 3   71     0.1898396
## 4   70     0.3770053
## 5   67     0.5561497
## 6   46     0.6791444
## 7   50     0.8128342
## 8   70     1.0000000
# Criar linha Total com as mesmas colunas
TotalLinha = data.frame(
  Freq = sum(Tabela),
  Freq.rel.acum = sum(prop.table(Tabela))
)

rownames(TotalLinha) <- "Total" # Adicionar o nome da linha

TotalLinha[c(2)]= ""

Dist.compl <- rbind(Dist.Freq, TotalLinha) # Juntar/Adicionar a linha 

Dist.compl
##       Freq     Freq.rel.acum
## 3       71 0.189839572192513
## 4       70 0.377005347593583
## 5       67 0.556149732620321
## 6       46 0.679144385026738
## 7       50 0.812834224598931
## 8       70                 1
## Total  374

Comentário: Constata-se que menos de 20% dos indivíduos apresentam nível de stresse 3. Observa-se igualmente que o nível de stresse 6 corresponde ao grupo com menor número de indivíduos..

Exercício 5

Contabilize o número de professores (Occupation=Teacher) do sexo masculino (Gender=Male).

# usando a Função Soma, uma vez que se trata de va qualitativa.

sum(DADOS$Occupation == "Teacher" # Somar dentro va coluna os Professores
    & DADOS$Gender == "Male") # Selecionar apenas do sexo Masculino
## [1] 5

Exercício 6

Calule a média, a mediana e a moda da distribuição da variável Age.

Poderá afirmar que esta distribuição tem uma assimetria positiva? Justifique a sua resposta.

mean(DADOS$Age)# Calcular a Média
## [1] 42.18449
median(DADOS$Age) # Calcular a Mediana
## [1] 43
Moda = subset(table(DADOS$Age), # Constrói uma tabela
              table(DADOS$Age) == max(table(DADOS$Age))) # Calcula a maior frequencia

Moda # Retorna o Objecto com a Maior frequancia (Objecto - Frequência)
## 43 
## 34

Não. Não podemos afirmar que a distribuição é assimétrica positiva, visto que a Média é menor do que a Moda, considerando o primeiro coeficiente de assimetria de pearson.

Exercício 7

Considere uma nova base de dados de DADOS contendo apenas as variáveis numéricas: Age, Sleep_Duration, Heart_Rate, Daily_Steps.

str(DADOS) # Conhecer a estructura dos dados e tipos de variáveis
## 'data.frame':    374 obs. of  13 variables:
##  $ Person ID              : num  1 2 3 4 5 6 7 8 9 10 ...
##  $ Gender                 : chr  "Male" "Male" "Male" "Male" ...
##  $ Age                    : num  27 28 28 28 28 28 29 29 29 29 ...
##  $ Occupation             : chr  "Software Engineer" "Doctor" "Doctor" "Sales Representative" ...
##  $ Sleep Duration         : num  6.1 6.2 6.2 5.9 5.9 5.9 6.3 7.8 7.8 7.8 ...
##  $ Quality of Sleep       : num  6 6 6 4 4 4 6 7 7 7 ...
##  $ Physical Activity Level: num  42 60 60 30 30 30 40 75 75 75 ...
##  $ Stress Level           : num  6 8 8 8 8 8 7 6 6 6 ...
##  $ BMI Category           : chr  "Overweight" "Normal" "Normal" "Obese" ...
##  $ Blood Pressure         : chr  "126/83" "125/80" "125/80" "140/90" ...
##  $ Heart Rate             : num  77 75 75 85 85 85 82 70 70 70 ...
##  $ Daily Steps            : num  4200 10000 10000 3000 3000 3000 3500 8000 8000 8000 ...
##  $ Sleep Disorder         : chr  "None" "None" "None" "Sleep Apnea" ...
DADOS1 = DADOS[ ,c("Age","Sleep Duration","Heart Rate","Daily Steps")]

View(DADOS1) # Visualizar a nova Base de Dados

Exercício 8

Altere, na nova base de dados, o nome das variáveis numéricas para: Idade, Duracao, Pulsacao, Passos.

colnames(DADOS1) = c("Idade","Duracao","Pulsacao","Passos") # renomear as variáveis (nome das colunas) conforme o enunciado.

View(DADOS1) # Visualizar a alteração

Exercício 9

Exporte a base de dados criada com as 4 variáveis numéricas para um ficheiro de texto com o nome Dormir.txt, usando o símbolo ; como separator de colunas.

write.table(DADOS1, # Base de dados a ser exportado
            file = "Dormir.txt", # Nome e o Tipo de Ficheiro a ser exportado
            sep = ";", # Condição solicitado
            quote = FALSE) # Mantêm os nomes sem apas