NUT 105 Bioestatística – Limpeza de Dados e Classificação de Variáveis

Objetivo da Aula

Compreender o funcionamento do R e do RStudio, realizar operações básicas, importar dados e obter estatísticas iniciais.

1. O que é o R e o RStudio?

  • R: linguagem de programação para análise estatística.
  • RStudio: ambiente gráfico que facilita o uso do R.

2. Conhecendo o RStudio

  • Console: onde comandos são executados.
  • Script: onde você escreve e salva códigos.
  • Environment: mostra objetos (como vetores e data frames).
  • Files/Plots/Packages/Help: arquivos, gráficos e ajuda.

Figura 2.1. – Interface do RStudio

Interface do RStudio

2.1 Editor / Script

Na aba Script (editor), podemos escrever e editar os códigos de programação necessários.Vamos começar escrevendo, na seção Script, o pequeno código abaixo:

peso = 75

peso

Figura 2.1.1. – Interface do R Studio

Primeiros códigos em R

2.2. Como compilar os códigos no R Studio?

A execução de uma linha de código no Script (Editor) pode ser feita de duas maneiras. Uma delas é utilizando um dos seguintes atalhos:

Ctrl + Enter

ou

Ctrl + R

A outra opção é utilizar o botão Botão Run (Executar) do RStudio, posicionado à direita na aba Editor.

Comentário do professor

Ao executar as linhas do código de programação deve-se posicionar o cursor em qualquer posição da linha (Figura 2.2.1). A execução e leitura dos comandos implementados é realizada pelo R linha por linha.

Figura 2.2.1 – Cursor em diferentes posicionamentos

Script do RStudio
Figura a – Cursor fixado no início da linha a ser executada.

Console do RStudio
Figura b – Cursor fixado no centro da linha a ser executada.

Executando o código

Execute o código utilizando uma das duas opções mencionadas na Seção 2.2 e verifique se a saída é semelhante à apresentada na Figura 2.1.3.

Figura 2.2.3. – Interface do R Studio após execução dos códigos.

Primeiros códigos em R
Aviso importante

Para compilar todo ou parte do código de uma única vez basta selecionar a parte desejada e executá-la com Ctrl + Enter ou pelo Botão Run (Executar) do RStudio

Figura 2.2.4. – Compilando um bloco de códigos.

Primeiros códigos em R

2.3. Como salvar o Script?

Após digitar seus códigos no editor, é fundamental salvar o Script para evitar a perda de informações. O salvamento pode ser feito de duas formas:

Clicando no botão Botão Save (Salvar) do RStudio na parte superior do editor.

Utilizando o atalho Ctrl + S.

Comentário do professor

Crie uma pasta para a disciplina no diretório de sua preferência, após isso, salve seu Script com um nome simples e significativo, como aula_1.R (Figura 2.3.1). O arquivo será armazenado com a extensão .R e pode ser reutilizado em outras aulas ou projetos.

Figura 2.3.1. – Salvando o ScriptTela Salvar

3. Console e Environment

Após a compilação do código anterior as abas Console e Environment apresentam as seguintes informações:

Figura 3.1. – Resultados no Console.

Console

Console: apresenta o resultado dos comandos executados.
Environment: exibe os nomes e os respectivos valores das variáveis criadas.

Dica

A cor azul do texto exibido no Console após a execução do código indica que a compilação foi realizada com sucesso e que os resultados estão sendo apresentados sem erros.

4. Primeiros Comandos : Operações matemáticas.

Comentário do professor

Neste momento, é interessante pensarmos no softawre R como uma simples calculadora.

Figura 4.1. – Calculadora R.

Versão limitada

A tabela 4.1 apresenta os comandos em linguagem R para as operações matemáticas básicas.

Tabela 4.1 – Operações Matemáticas Básicas no R

Operação Comando em R Exemplo Resultado
Soma + 2 + 2 4
Subtração - 10 - 4 6
Multiplicação * 5 * 3 15
Divisão / 20 / 5 4
Potência ^ 2^3 8
Raiz quadrada sqrt() sqrt(25) 5
Logaritmo log() log(100) 4.6052
Execute o código abaixo:
2 + 2       # Soma
[1] 4
10 - 4      # Subtração
[1] 6
5 * 3       # Multiplicação
[1] 15
20 / 5      # Divisão
[1] 4
2^3         # Potência
[1] 8
sqrt(25)    # Raiz quadrada
[1] 5
log(100)    # Logaritmo
[1] 4.60517
Exemplo 1 : Avaliação nutricional de uma paciente

Durante a anamnese nutricional, são coletadas informações como peso, estatura, idade e medidas corporais da paciente Ana Beatriz (Figura 4.2). A seguir, mostramos como tais dados podem ser organizados e utilizados no R para calcular os principais indicadores antropométricos e energéticos: IMC, RCQ, TMB,GET e ingestão calórica baseada no recordatório de 24h.

Figura 4.1. Informações antropométricas da paciente.

Prontuário nutricional

A seguir, na Tabela 4.2, estão descritas as fórmulas utilizadas para o cálculo dos indicadores mencionados, bem como suas respectivas fontes bibliográficas.

Complementando essas informações, a Tabela 4.3 apresenta os principais fatores de atividade física utilizados para estimar o GET a partir da TMB, conforme o nível habitual de esforço do paciente (FAO/WHO/UNU ,2004).

Tabelas 4.2 e 4.3 – Indicadores e Níveis de Atividade Física

Tabela 4.2 – Medidas Antropométricas e Energéticas Utilizadas

Medida Fórmula Referência
IMC $\displaystyle \frac{\text{peso (kg)}}{\text{altura (m)}^2}$ WHO, 2000
RCQ $\displaystyle \frac{\text{cintura (cm)}}{\text{quadril (cm)}}$ WHO, 2011
TMB – M $\displaystyle 10 \cdot \text{peso} + 6{,}25 \cdot \text{altura} - 5 \cdot \text{idade} + 5$ Mifflin-St Jeor, 1990
TMB – F $\displaystyle 10 \cdot \text{peso} + 6{,}25 \cdot \text{altura} - 5 \cdot \text{idade} - 161$ Mifflin-St Jeor, 1990
GET $\displaystyle \text{TMB} \cdot \text{Fator de Atividade}$ FAO/WHO/UNU, 2001

Tabela 4.3 – Fatores de Atividade Física

Nível de Atividade Fator Descrição
Sedentário 1.2 Pouca ou nenhuma atividade física
Levemente ativo 1.375 – 1.5 Atividades leves como caminhar devagar ou tarefas domésticas
Moderadamente ativo 1.55 – 1.75 Exercício moderado diário ou trabalho fisicamente exigente
Altamente ativo 1.75 – 2.0 Exercício intenso ou atividade física pesada diária
Extremamente ativo 2.0 – 2.4 Atletas de elite ou treino físico intenso por várias horas

Para realizarmos os cálculos solicitados no Exemplo 1, é necessário dispor tanto das informações registradas no prontuário da paciente quanto das fórmulas dos indicadores adotados (Figura 4.2).

Figura 4.2 – Informações antropométricas da paciente e fórmulas dos índices.

Figura a – Medidas antropométricas da paciente
Figura a – Prontuário nutricional.

Figura b – Fórmulas utilizadas para os cálculos
Figura b – Fórmulas dos indicadores considerados.

Em R fazemos da seguinte forma:

Execute o código abaixo
# Cálculo dos indicadores.

92.4/1.51^2                    # IMC
[1] 40.52454
108/120                        # RCQ
[1] 0.9
(10*92.4+6.25*1.51-5*33-161)   # TMB_Mulher
[1] 607.4375
607.4375*1.2                   # GET
[1] 728.925
Atenção: decimais no R

Em R os decimais são separados por . e nunca por , .

4.1 Declarando Variáveis/Objetos e Vetores

De fato, todos os cálculos até aqui foram realizados da mesma forma que seriam em uma calculadora convencional, o que pode inicialmente nos levar a não perceber vantagens imediatas no uso do R em comparação com uma calculadora comum! No entanto, o uso do R (Figura 4.1) oferece recursos adicionais que enriquecem a prática analítica. Na seção a seguir, por exemplo, vamos ver que é possível nomear explicitamente os indicadores calculados, o que se assemelha ao raciocínio adotado em cálculos manuais ou analíticos realizados em contexto clínico (Figura 4.1.3).

4.1.1. Variáveis ou Objetos

Em R, uma variável (também chamada de objeto) é um nome associado a uma informação, valor ou conjunto de valores. Essas informações podem ser de natureza quantitativa (como peso, idade ou altura) ou qualitativa (como nome, sexo ou categoria alimentar).

A declaração de uma variável é feita por meio de um símbolo de atribuição, que associa o nome da variável ao seu conteúdo. A notação recomendada e mais utilizada em R é <-, embora o sinal de igual = também seja aceito1.

Executando este código

Figura a – Dados fictícios
Figura a – Medidas antropométricas da paciente.

# Código para cálculo em R do Índices considerados
# Medidas antropométricas - Paciente: Ana Beatriz.
Nome <- "Ana Beatriz"
Nascimento <- "11/03/1987"
D_atendimento <- "25/10/2023"
Sexo <- "F"
Peso <- 92.4
Altura <- 1.51
CC <- 108.0
CQ <- 120.0

Idade <- 33.0

NAF <- "sedentaria"

IC <- 2933.0

Para evitar possíveis erros são consideradas algumas regras para nomeação das variáveis.

  • Nomes de variáveis podem começar com:

    • Uma letra (a a z, A a Z)

    • Um ponto (.) (desde que não seguido de número)

    • Um underline

Por exemplo:

Declarações válidas:
nome <- "João"
idade2 <- 25
.media_total <- 30
total_usuarios <- 10
  • Nomes de variáveis que não podem:

    • Começar com número
    • Conter espaços
    • Conter acentos ou cedilhas
    • Incluir caracteres especiais (-, ;, %, @, etc.)
    • Usar operadores (*, +, /, etc.) no nome
    • Sobrescrever palavras reservadas da linguagem (como if, TRUE, for)

Por exemplo:

Declarações inválidas:
2idade <- 30              # começa com número
minha variavel <- 10      # contém espaço
nome-do-usuario <- "ana"  # hífen é interpretado como subtração
é_valido <- TRUE          # contém acento
total% <- 100             # caractere especial não permitido
media*idade <- 5          # operador não permitido no nome
@usuario <- "joao"        # símbolo especial não permitido
TRUE <- "sim"             # não pode sobrescrever palavra reservada
if <- "condição"          # `if` é palavra-chave da linguagem
Evite também :
MediaIdade   # PascalCase
mediaIdade   # camelCase (menos comum no R)

A impressão ou visualização das informações que as variáveis guardam podem ser acessadas compilando apenas o nome escolhido para tal variável. Acesse as informações das variáveis que acabmos de declarar copiando ou escrevendo o código abaixo:

Execute o código abixo:
Nome
[1] "Ana Beatriz"
Nascimento
[1] "11/03/1987"
D_atendimento
[1] "25/10/2023"
Sexo 
[1] "F"
Peso
[1] 92.4
Altura
[1] 1.51
CC
[1] 108
CQ
[1] 120
Idade
[1] 33
NAF
[1] "sedentaria"
IC
[1] 2933

Mesmo quando uma variável possui o mesmo nome, escrevê-la de formas diferentes — com letras maiúsculas ou minúsculas — faz com que o R reconheça essas entradas como variáveis distintas. Se tentarmos acessar uma variação inexistente, como NoMe,NASCIMENTO ou PeSo, o R retornará um erro informando que o objeto não foi encontrado. Execute o código abaixo:

Atenção - Nomes de variáveis em R são Case sensitive
NoMe
NASCIMENTO
PeSo

Mensagem de erro

4.1.2. Vetores

Comentário do professor

Agora, algumas vantagens quanto ao uso dessa calculadora (Figura 4.1) começam aparecer!

Uma das principais vantagens do uso do R em comparação com uma calculadora tradicional é a sua capacidade de operar com estruturas vetoriais. Vetores são objetos que armazenam uma sequência de valores do mesmo tipo, como números, textos ou valores lógicos. São fundamentais em análises estatísticas e estão presentes em praticamente todo tipo de dado em R.

Aviso: Como criar vetores de dados ?

Você pode criar vetores numéricos, de texto ou lógicos usando a função c() (de combine).

No código abaixo temos um exemplo para criação de vetores de todos os tipos (numérico, texto e lógico).

Execute este código
# Vetor de texto (Caracteres)
nomes <- c("Ana", "João", "Fernanda")

# Vetor numérico
idades <- c(34, 45, 29)

# Vetor lógico
respondeu <- c(TRUE, FALSE, TRUE)

Considere agora que, além das informações antropométricas descritas no Exemplo 1 referente à paciente Ana, também temos os dados de mais dois pacientes. Nesse caso, os vetores (também chamados de strings no caso de textos) serão fundamentais para nos ajudar a armazenar e organizar as informações referentes aos três pacientes de forma eficiente.

Exemplo 2: Vetores

Construa vetores para para armazenar as informações das variáveis antropométricas dos três pacientes (Figura 4.3)

Prontuários: Ana, joão e Fernanda

Em R, podemos fazer assim:

Execute este código
# Código para cálculo em R do Índices considerados
# Medidas antropométricas dos 3 pacientes.

Nomes <- c("Ana Beatriz","João","Fernanda")
Nascimentos <- c("11/03/1987","19/02/1995" ,"19/02/1995")
D_atendimentos <- c("25/10/2023","25/10/2023","25/10/2023")
Gêneros <- c("F","M","F")
Pesos <- c(92.4,55.00 ,56.6)
Alturas <- c(1.51,55.00 ,1.72)
CCs <- c(108.0,55.00,70)
CQs <- c(120.0,55.00,95)
Idades <- c(33.0,55.00, 28)
NAFs <- c("sedentaria","moderada","moderada")
ICs <- c(2933.0,2165.0,2165.0)
pacientes <- data.frame(
Nomes = c("Ana Beatriz","João","Fernanda"),
Nascimentos = c("11/03/1987","19/02/1995" ,"19/02/1995"),
D_atendimentos = c("25/10/2023","25/10/2023","25/10/2023"),
Gêneros = c("F","M","F"),
Pesos = c(92.4,55.00 ,56.6),
Alturas = c(1.51,55.00 ,1.72),
CCs = c(108.0,55.00,70),
CQs = c(120.0,55.00,95),
Idades = c(33.0,55.00, 28),
NAFs = c("sedentaria","moderada","moderada"),
ICs = c(2933.0,2165.0,2165.0)
)

View(pacientes)
Exemplo 2: Cálculo dos índices para os três pacientes
IMCs<-Pesos/(Idades)^2
IMCs
[1] 0.08484848 0.01818182 0.07219388

-Agora essa aba está fazendo sentido. trabalhar a visualização das variáveis e suas informações no Environment. -outro exemplo/exercícios Cálcular os índices para todo mundo

-acessar os elementos de um vetor (chat)

-Criar um data frame

5.2 Explorando variáveis criadas

mean(idade)     # Média
sd(idade)       # Desvio padrão
length(idade)   # Tamanho do vetor

6. Criando um Conjunto de Dados no Próprio R

pacientes <- data.frame(
  nome = c("Ana", "Carlos", "Fernanda"),
  idade = c(34, 45, 29),
  sexo = c("F", "M", "F"),
  imc = c(22.5, 27.8, 20.3)
)

View(pacientes)

7. Definindo Pasta de Trabalho

#getwd()                    # Verificar pasta atual
#setwd("C:/MeuProjeto")     # Definir pasta (Windows)

8. Instalando e Carregando Pacotes

# install.packages("nome_do_pacote")  # Instalar o pacote
# library(nome_do_pacote)             # Carregar o pacote

9. Importando Dados Reais

dados <- read.csv("dados.csv")
head(dados)
  id sexo idade peso altura  imc nivel_glicose colesterol atividade_fisica
1  1    F  56.7 66.4   1.50 29.5          79.4      238.9             1-2x
2  2    M  71.9 72.1   1.69 25.2         120.8      192.0              >5x
3  3    F  29.5 73.8   1.84 21.8          90.1      193.9              >5x
4  4    F  32.5 74.3   1.73 24.8          92.2      152.1             1-2x
5  5    F  65.9 48.8   1.58 19.5          81.5      147.9          Nenhuma
6  6    F  35.4 41.8   1.48 19.1          81.0      170.9             1-2x
  pressao_alta diabetes suplementa_magnesio ingestao_magnesio
1            0        0                   0             238.5
2            1        0                   0             288.1
3            1        1                   0             446.0
4            1        0                   0             276.8
5            0        0                   1             254.0
6            0        0                   0             179.9
  classificacao_magnesio
1               Moderada
2    Hipomagnesemia leve
3                 Normal
4    Hipomagnesemia leve
5               Moderada
6                  Grave
Observação importante

O arquivo de dados deverá estar salvo na mesma pasta que o Script

10. Resumo e Exploração de Dados

summary(dados$idade)
   Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
  19.50   36.12   47.10   46.35   55.95   76.20 
table(dados$sexo)

 F  M 
55 45 
mean(dados$imc)
[1] 25.458

11. Gráficos Simples

barplot(table(dados$sexo))

hist(dados$idade)

12. Limpeza dos Dados

O processo de limpeza de dados é uma etapa fundamental para garantir a qualidade das análises estatísticas. A seguir, aplicaremos técnicas simples, porém eficientes, para tratar inconsistências, dados ausentes e erros de digitação no nosso banco de dados.

12.1 Carregando os dados

dados <- read.csv("dados_nut105_problema.csv")
View(dados)

12.2. Verificando a estrutura dos dados

str(dados)
'data.frame':   35 obs. of  10 variables:
 $ Nome      : chr  "Ana" "Joao" "Fernanda" "Carlos" ...
 $ Nascimento: chr  "1987-03-11" "1990-06-22" "1985-09-15" "1987-03-11" ...
 $ Sexo      : chr  "F" "Feminino" "M" "" ...
 $ Peso      : chr  "92" "55" "não informado" "55" ...
 $ Altura    : chr  "1.7" "1.68" "1.68" "1.65" ...
 $ CC        : int  NA 95 105 NA NA 70 100 NA NA 108 ...
 $ CQ        : int  105 100 115 95 95 115 90 115 NA NA ...
 $ Idade     : chr  "45" "45" "35" "40" ...
 $ NAF       : chr  "moderada" "sedentaria" "" "alta" ...
 $ IC        : chr  "não informado" "não informado" "2000" "2200" ...

12.3 Corrigindo inconsistências na variável Sexo

Observe que a variável Sexo contém registros como “F”, “Feminino” e “M”, além de valores ausentes (NA). Vamos padronizar esses registros.

dados$Sexo[dados$Sexo == "Feminino"] <- "F"
dados$Sexo[dados$Sexo == "Masculino"] <- "M"
unique(dados$Sexo)
[1] "F"         "M"         ""          "feminino"  "masculino"

12.4 Corrigindo problema na variável Peso

O valor “não informado” está presente na coluna Peso e impede que ela seja tratada como numérica.

dados$Peso <- as.numeric(gsub("não informado", NA, dados$Peso))
summary(dados$Peso)
   Min. 1st Qu.  Median    Mean 3rd Qu.    Max.    NA's 
  55.00   57.50   72.00   72.89   83.00   92.00       8 

Verificando dados faltantes

colSums(is.na(dados))
      Nome Nascimento       Sexo       Peso     Altura         CC         CQ 
         0          0          0          8          0          6          8 
     Idade        NAF         IC 
         0          0          0 

12.5 Preenchendo valores ausentes de forma simples

Para esta aula, utilizaremos estratégias simples para preencher os dados faltantes. Nas práticas profissionais, este processo pode ser mais elaborado.

dados$CC[is.na(dados$CC)] <- mean(dados$CC, na.rm = TRUE)
dados$CQ[is.na(dados$CQ)] <- mean(dados$CQ, na.rm = TRUE)
dados$NAF[is.na(dados$NAF)] <- "moderada"

dados$IC <- as.numeric(gsub("não informado", NA, dados$IC))
dados$IC[is.na(dados$IC)] <- mean(dados$IC, na.rm = TRUE)

summary(dados)
     Nome            Nascimento            Sexo                Peso      
 Length:35          Length:35          Length:35          Min.   :55.00  
 Class :character   Class :character   Class :character   1st Qu.:57.50  
 Mode  :character   Mode  :character   Mode  :character   Median :72.00  
                                                          Mean   :72.89  
                                                          3rd Qu.:83.00  
                                                          Max.   :92.00  
                                                          NA's   :8      
    Altura                CC               CQ           Idade          
 Length:35          Min.   : 70.00   Min.   : 90.0   Length:35         
 Class :character   1st Qu.: 87.50   1st Qu.: 95.0   Class :character  
 Mode  :character   Median : 91.66   Median :103.9   Mode  :character  
                    Mean   : 91.66   Mean   :103.9                     
                    3rd Qu.:100.00   3rd Qu.:110.0                     
                    Max.   :108.00   Max.   :120.0                     
                                                                       
     NAF                  IC      
 Length:35          Min.   :1800  
 Class :character   1st Qu.:2200  
 Mode  :character   Median :2681  
                    Mean   :2681  
                    3rd Qu.:3000  
                    Max.   :3500  
                                  

##12.6 Classificando as variáveis

Após a limpeza, as variáveis podem ser classificadas em:

Qualitativas Nominais: Nome, Sexo, NAF.

Quantitativas Discretas: Idade.

Quantitativas Contínuas: Peso, Altura, CC, CQ, IC.

Datas: Nascimento, D_atendimento (armazenadas como texto, podem ser convertidas).

str(dados)
'data.frame':   35 obs. of  10 variables:
 $ Nome      : chr  "Ana" "Joao" "Fernanda" "Carlos" ...
 $ Nascimento: chr  "1987-03-11" "1990-06-22" "1985-09-15" "1987-03-11" ...
 $ Sexo      : chr  "F" "F" "M" "" ...
 $ Peso      : num  92 55 NA 55 92 NA 72 80 72 55 ...
 $ Altura    : chr  "1.7" "1.68" "1.68" "1.65" ...
 $ CC        : num  91.7 95 105 91.7 91.7 ...
 $ CQ        : num  105 100 115 95 95 ...
 $ Idade     : chr  "45" "45" "35" "40" ...
 $ NAF       : chr  "moderada" "sedentaria" "" "alta" ...
 $ IC        : num  2681 2681 2000 2200 3500 ...

##12.7 Exportando o banco limpo

write.csv(dados, "dados_nut105_limpo.csv", row.names = FALSE)

Agora o conjunto de dados está preparado para análises futuras.

🔍 Discussão Crítica sobre a Limpeza de Dados

Comentário do professor

Nesta etapa, aplicamos procedimentos básicos de limpeza no conjunto de dados dados_nut105_problema.csv. Essas intervenções foram suficientes para preparar o banco de dados para análises iniciais. Contudo, é essencial refletirmos sobre as boas práticas associadas a esse processo no contexto científico e profissional.

O que foi realizado nesta aula:

  • Padronização de categorias na variável Sexo (ex.: “Feminino” → “F”).
  • Conversão de dados textuais (como "não informado") em valores ausentes (NA) nas variáveis Peso e IC.
  • Preenchimento de valores ausentes:
    • Numéricas (CC, CQ, IC) → Imputação pela média.
    • Categórica (NAF) → Substituição pela categoria mais frequente (“moderada”).

Importantes:

  • As técnicas adotadas são simples e introdutórias, adequadas para os objetivos didáticos desta aula.
  • Na prática clínica e na pesquisa, o tratamento de dados ausentes exige uma abordagem mais criteriosa, considerando:
    • O padrão de ausência (aleatório ou não).
    • A proporção de dados faltantes.
    • O impacto estatístico e científico nas análises.

🔍 Tabela XX – Estratégias de Tratamento de Dados Ausentes

Estratégia Vantagens Limitações
Substituir pela Média Simples, rápida, mantém tamanho da amostra Reduz variabilidade, distorce análise se há muitos faltantes
Substituir pela Mediana Robusta a outliers Mesmo risco de subestimar variabilidade
Substituir pelo Valor Mais Frequente (Moda) Fácil para variáveis categóricas Pode gerar viés se não for representativo
Imputação por Regressão Considera relações entre variáveis Supõe relação linear, pode amplificar erros
Imputação Múltipla Método robusto, mantém variabilidade Mais complexo, exige ferramentas específicas
Exclusão de Casos Mantém dados íntegros, sem imputações Perda de informação, possível viés se ausência não é aleatória

13 Estatística descritiva - (Atividade avaliativa 2)

Vamos considerar os dados da pesquisa referente a dismagnesemia

# Leitura dos dados
dados_dismagnesemia <- read.csv("Dados_AtividadeFinal_NUT105.csv", header = TRUE, sep = ",", dec = ".")
dados_dismagnesemia$Idade<-as.numeric(dados_dismagnesemia$Idade)
dados_dismagnesemia$Origem<-as.factor(dados_dismagnesemia$Origem)
dados_dismagnesemia$Sexo<-as.factor(dados_dismagnesemia$Sexo)

variaveis_sociodemograficas<-c("Idade","Origem,Sexo")
dados_dismagnesemia$Idade<-as.numeric(dados_dismagnesemia$Idade)
dados_dismagnesemia$Origem<-as.factor(dados_dismagnesemia$Origem)
dados_dismagnesemia$Sexo<-as.factor(dados_dismagnesemia$Sexo)

variaveis_comorbidades<-c("HAS","DM","AVC","IAM","IRC","IRA","Neoplasias","ICC","Asma","DPOC","Pancreatite","Etilismo" )

# Transformar todas as variáveis do vetor em categoricas
dados_dismagnesemia[variaveis_comorbidades] <- lapply(dados_dismagnesemia[variaveis_comorbidades], as.factor)
variaveis_medicamentos<-c("Diuretico","Gentamicina","Pentamidina","Foscarnet","Pamidronato","Beta2agonista","Cisplatina","Sirolimus","Cetuximabe","Panitumumabes","AnfotericinaB","IBP")


# Transformar todas as variáveis do vetor em categoricas
dados_dismagnesemia[variaveis_medicamentos] <- lapply(dados_dismagnesemia[variaveis_medicamentos], as.factor)
variaveis_antropometricas<-c("Peso","Altura","IMC","CC"  )


# Transformar todas as variáveis do vetor em Quantitativas
dados_dismagnesemia[variaveis_antropometricas] <- lapply(dados_dismagnesemia[variaveis_antropometricas], as.numeric)
variaveis_laboratorio <- c("Hb", "GL", "Linfocitos", "Segmentados", "Plaquetas", "PCR","Ureia", "Creatinina", "P", "Ca", "Na", "K", "Mgserico", "Mgurinario")

# Transformar todas as variáveis do vetor em Quantitativas
dados_dismagnesemia[variaveis_laboratorio] <- lapply(dados_dismagnesemia[variaveis_laboratorio], as.numeric)

Classificando a variável classificação 2

dados_dismagnesemia$classificacao <- dplyr::case_when(
  dados_dismagnesemia$Mgserico < 1.7 ~ 0,
  dados_dismagnesemia$Mgserico <= 2.3 ~ 1,
  dados_dismagnesemia$Mgserico > 2.3 ~ 2,
  TRUE ~ NA_real_
)

dados_dismagnesemia$classificacao <-as.factor(dados_dismagnesemia$classificacao )

Sociodemograficos

library(dplyr)

Attaching package: 'dplyr'
The following objects are masked from 'package:stats':

    filter, lag
The following objects are masked from 'package:base':

    intersect, setdiff, setequal, union
library(janitor)

Attaching package: 'janitor'
The following objects are masked from 'package:stats':

    chisq.test, fisher.test
library(kableExtra)

Attaching package: 'kableExtra'
The following object is masked from 'package:dplyr':

    group_rows
# Tabela de frequências com janitor
tabela_sexo <- dados_dismagnesemia |>
  tabyl(Sexo) |>
  adorn_totals("row") |>
  adorn_percentages("col") |>
  adorn_pct_formatting()

# Exibir com kable para visual elegante
tabela_sexo |>
  kable(caption = "Distribuição da variável Sexo", format = "html") |>
  kable_styling(full_width = FALSE, bootstrap_options = c("striped", "hover", "condensed"))
Distribuição da variável Sexo
Sexo n percent
0 0.4 39.6%
1 0.6 60.4%
Total 1.0 100.0%
library(ggplot2)
Warning: package 'ggplot2' was built under R version 4.4.1
ggplot(dados_dismagnesemia, aes(x = Sexo, fill = Sexo)) +
  geom_bar(color = "black", show.legend = FALSE) +
  labs(title = "Distribuição da variável Sexo",
       x = "Sexo",
       y = "Frequência absoluta") +
  theme_minimal(base_size = 14) +
  scale_fill_brewer(palette = "Set2")

tabela_origem <- dados_dismagnesemia |>
  tabyl(Origem) |>
  adorn_totals("row") |>
  adorn_percentages("col") |>
  adorn_pct_formatting()

tabela_origem |>
  kable(caption = "Distribuição da variável Origem", format = "html") |>
  kable_styling(full_width = FALSE, bootstrap_options = c("striped", "hover", "condensed"))
Distribuição da variável Origem
Origem n percent
0 0.1 6.1%
1 0.7 71.7%
2 0.1 14.5%
3 0.1 7.8%
Total 1.0 100.0%
ggplot(dados_dismagnesemia, aes(x = Origem, fill = Origem)) +
  geom_bar(color = "black", show.legend = FALSE) +
  labs(title = "Distribuição da variável Origem",
       x = "Origem",
       y = "Frequência absoluta") +
  theme_minimal(base_size = 14) +
  scale_fill_brewer(palette = "Pastel2")

# Tabela resumo da idade


resumo_idade <- dados_dismagnesemia |>
  summarise(
    Mínimo = min(Idade, na.rm = TRUE),
    Q1 = quantile(Idade, probs = 0.25, na.rm = TRUE),
    Mediana = median(Idade, na.rm = TRUE),
    Q3 = quantile(Idade, probs = 0.75, na.rm = TRUE),
    Máximo = max(Idade, na.rm = TRUE),
    Média = round(mean(Idade, na.rm = TRUE), 1),
    `Desvio Padrão` = round(sd(Idade, na.rm = TRUE), 1)
  )

resumo_idade |>
  kable(caption = "Resumo estatístico da variável Idade", format = "html") |>
  kable_styling(full_width = FALSE, bootstrap_options = c("striped", "hover", "condensed"))
Resumo estatístico da variável Idade
Mínimo Q1 Mediana Q3 Máximo Média Desvio Padrão
18 37 55 68.75 101 53.6 20.2
# Calcular largura do bin com base em Freedman–Diaconis
iqr_idade <- IQR(dados_dismagnesemia$Idade, na.rm = TRUE)
n <- sum(!is.na(dados_dismagnesemia$Idade))
binwidth_fd <- 2 * iqr_idade / n^(1/3)

# Limites do eixo X
lim_inf <- floor(min(dados_dismagnesemia$Idade, na.rm = TRUE))
lim_sup <- ceiling(max(dados_dismagnesemia$Idade, na.rm = TRUE))

# Quebras dos bins com largura exata
breaks_fd <- seq(from = lim_inf, to = lim_sup + binwidth_fd, by = binwidth_fd)

# Histograma com os intervalos exatos
ggplot(dados_dismagnesemia, aes(x = Idade)) +
  geom_histogram(breaks = breaks_fd, fill = "#69b3a2", color = "white") +
  scale_x_continuous(breaks = round(breaks_fd, 1)) +
  labs(
    title = "Distribuição da variável Idade (Critério de Freedman–Diaconis)",
    x = "Idade (anos)",
    y = "Frequência"
  ) +
  theme_minimal(base_size = 14)

Footnotes

  1. Texto em fase de elaboração , sujeito a imperfeições . Por exemplo, vamos considerar novamente o exemplo anterior para considerar esse recurso que o R fornece que é nomear explicitamente os indicadores.↩︎

  2. Texto em fase de elaboração , sujeito a imperfeições . Por exemplo, vamos considerar novamente o exemplo anterior para considerar esse recurso que o R fornece que é nomear explicitamente os indicadores.↩︎