1
resposta

Uniformizar categorias em um variável idade

Tenho uma coluna em que que a variável idade foi anotada com unidades de medida diferentes (ex: ano, mês, dia, década, semana e ainda células em branco). Gostaria de uniformizar as anotações para poder fazer uma análise descritiva no R. Já tentei criar subsets com cada uma das unidades de medida mas acredito que estou perdendo informação, visto que a soma dos subset não é igual ao conjunto de dados iniciais.

Alguém tem uma sugestão para solucionar o problema?

Agradeço desde já.

1 resposta

Olá Thales, tudo bem?

Uma alternativa para solucionar esse problema, é converter todas as idades para uma única unidade de medida, como anos, por exemplo. Isso facilitará a análise e garantirá que você não perca informações.

  • Primeiro, você precisa identificar e separar as diferentes unidades de medida. Você pode fazer isso utilizando a função grepl para criar novas colunas lógicas que identifiquem se a idade está em anos, meses, dias, décadas ou semanas.
dados$ano <- grepl("ano", dados$idade)
dados$mes <- grepl("mês", dados$idade)
dados$semana <- grepl("semana", dados$idade)
  • Em seguida, você pode converter todas as idades para anos. Caso a coluna idade inclua o número seguido da unidade (por exemplo, "2 anos", "5 meses", etc.). Você pode extrair o número e realizar a conversão apropriada.
# Função extrair o número da idade
extrair_numero <- function(idade) {
  as.numeric(gsub("[^0-9]", "", idade))
}

# função para extrair o número
dados$idade_num <- sapply(dados$idade, extrair_numero)

# Convertendo tudo para anos
dados$idade_anos <- ifelse(dados$ano, dados$idade_num,
                           ifelse(dados$mes, dados$idade_num / 12,
                                  ifelse(dados$dia, dados$idade_num / 365,
                                         ifelse(dados$decada, dados$idade_num * 10,
                                                ifelse(dados$semana, dados$idade_num / 52, NA)))))

Você também pode tratar as células em branco.

dados$idade_anos[is.na(dados$idade_anos)] <- NA  # ou escolha um valor específico

No entanto, apenas ressalto que esses códigos são sugestões, talvez seja necessário fazer algumas adaptações para se adequar ao seu projeto.

Espero ter ajudado.

Qualquer dúvida, compartilhe no fórum.

Abraços e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!