read_more
Campus Virtual Fiocruz

Introdução à Análise de Dados para pesquisa no SUS

Módulo 1 | Aula 2
Introdução à Linguagem de Programação

Tópico 4

Criando uma variável utilizando operações lógicas

No dplyr temos a função chamada if_else, que é o mesmo que o se/se não, da aula de lógica de programação. Então, vamos usá-lo. Para usar o if_else, primeiro mostrei a sintaxe de um caso simples, depois a aplicaremos na variável SEXO.

A sintaxe do mutate em conjunto com o if_else é: primeiro, definimos a variável que receberá o resultado (no exemplo a seguir chamamos de variavel), seguida pelo operador de atribuição =. Em seguida, utilizamos o if_else, que recebe três parâmetros: o primeiro é a condição a ser avaliada; o segundo, o valor retornado se a condição for verdadeira; e o terceiro, o valor retornado se a condição for falsa. Vale a pena explorar a documentação do if_else no R para entender melhor e verificar outros parâmetros disponíveis para essa função.

Sintaxe
											
												# Criando variáveis condicionais com if_else

												data_frame <- data_frame %>%
												   mutate(variável = if_else(condição, verdadeiro, falso))
											
										

Agora, você pode aplicar no RStudio a condicional com mutate para criar uma variável em nossos dados.

Na Prática!

Comando:

Saída:

No dplyr temos a função chamada de case_when, que tem a mesma funcionalidade do if_else; entretanto, principalmente quando temos mais de duas condições a ser verificada, a sintaxe adequada é a seguinte:

Sintaxe
											
												# case_when para múltiplas condições

												case_when(
												   condição_1 ˜ resultado_1,
												   condição_2 ˜ resultado_2,
												   condição_3 ˜ resultado_3,
												   TRUE ˜ resultado_padrão
												)
											
										

Agora vamos aplicar aos nossos dados o case_when, no repositório.

Na Prática!

Comando:

Saída:

O uso do case_when, nesse caso, torna o código mais organizado e legível. Dentro do mutate, começamos definindo o nome da variável, seguido pelo operador de atribuição (=). Após o case_when, podemos adicionar quantas condições forem necessárias para resolver o problema, separando cada uma por vírgulas. Por exemplo, a primeira condição é SEXO == 1 ~ "Masculino", ou seja, se o valor de SEXO for igual a 1, o resultado será "Masculino", e assim por diante.

É importante destacar que, quando uma condição é verdadeira, o case_when não verifica as demais. Ao aplicar o case_when dessa forma, todas as linhas do dataframe são verificadas e uma nova coluna é criada, que chamamos de sexo_p (com "p" de padronizado). Agora, vamos verificar a frequência dessa (nova) variável.

Ao rodar esses comandos, você vai notar que o seu Dataframe passará a ter mais duas colunas, totalizando 8 variáveis. No primeiro comando, criamos a variável sexo_p e, no segundo, criamos a variável sexo_2. Se quiser conferir por conta própria você pode testar usar a função glimpse novamente.

Alterando a Variável de Data

Outra variável que vamos alterar é a DTOBITO, que representa a data do óbito. Ao executar o comando glimpse, percebemos que a variável DTOBITO está no tipo "caracter", mas sabemos que se trata de uma data.

Para realizar operações com datas, como:

  • Subtrair dias de uma data,
  • Adicionar dias,
  • Calcular a diferença entre duas datas,

Precisamos que a variável esteja no tipo Date, que é o tipo apropriado para lidar com datas no R.

Para facilitar o trabalho com datas no R, utilizaremos o pacote lubridate, que está incluído no Tidyverse. Ele fornece funções simples e intuitivas para manipulação de datas. Você já deve ter instalado e carregado este pacote junto com os outros no subtópico Pacotes, em caso de dúvidas, revise esse conteúdo.

Depois, crie uma variável do tipo date chamada de dt_DTOBITO, usando o mutate novamente. As datas nos bancos de dados podem aparecer em vários formatos, mas os dois mais comuns são:

  • Formato brasileiro: dia/mês/ano (dd/mm/yyyy)
  • Formato americano: ano/mês/dia (yyyy/mm/dd)

No nosso caso, ao observar a variável DTOBITO usando glimpse, notamos que as datas estão no formato "ddmmyyyy" (por exemplo, 24072023 para o dia 24 de julho de 2023).

Funções do lubridate para Manipulação de Datas

O pacote lubridate oferece muitas funções para trabalhar com diferentes formatos de datas. A função ymd() é especialmente útil quando você precisa converter uma data no formato ano/mês/dia (mesmo que os valores estejam juntos, como no nosso caso).

Vamos utilizar ymd() para transformar a variável DTOBITO, que atualmente está no formato de texto, em uma data do tipo Date.

Alterando e Criando Variáveis no Mutate

O mutate pode ser usado para criar ou alterar múltiplas variáveis de uma só vez, separando cada nova operação por vírgula. Aqui, vamos:

  1. Converter a variável DTOBITO para o formato de data usando ymd().
  2. Criar uma variável ano_obito que extrai o ano a partir da data de óbito, utilizando a função year() do lubridate.

Na Prática!

Comando:

Agora, temos:

  • DTOBITO_dt no formato correto de data, pronto para operações com datas.
  • ano_obito, uma nova variável, que contém apenas o ano extraído da data.

No R, a ordem das operações importa! Nesse caso, para garantir que tudo funcione corretamente, você precisa primeiro converter a variável DTOBITO em uma data, e só depois extrair o ano. Isso acontece porque a função que extrai o ano (no caso, year()) só funciona corretamente com variáveis do tipo Date. Se você tentar fazer na ordem errada, o resultado não será o esperado.

Acesse o site oficial do lubridate

Para saber mais, confira um resumo com dicas de uso no link:

Agora, utilize de novo a função glimpse(). Você verá as alterações realizadas no seu Dataframe (destacado no retângulo vermelho).

Na Prática!

Comando:

Agora vamos rever a função de contagem. Use a função count() do Tidyverse para contar a frequência de óbitos por ano e por sexo:

Na Prática!

Comando:

Saída:

Observe que todos os óbitos são do ano de 2023. Agora, vamos alterar a variável IDADE. Confira no dicionário de dados como funciona essa variável. Iremos alterar todas as observações para anos. Usaremos agora outro pacote para manipular o tipo de dado character (também chamado de string), carregue o pacote stringr do Tidyverse.

Você já deve ter instalado e ativado o pacote stringr do Tidyverse no subtópico Pacotes, em caso de dúvidas, revise esse conteúdo.

A variável IDADE tem uma codificação conforme dicionário de dados. O primeiro elemento da string varia de 0 a 5 , indica a unidade da idade, em horas, dias meses etc., enquanto os dígitos seguintes indicam a quantidade de unidades. Por exemplo, 204 significa que a idade está em dias e o indivíduo tinha 4 dias; 305 seria 5 meses, e assim por diante. Vamos alterar para anos.

Nosso primeiro passo vai ser dividir a string idade em duas, para simplificar. Usaremos a função do pacote stringr chamada str_sub(), que extrai uma parte da string, usando parâmetros como a string a ser extraída, o início e o final da nossa extração. Assim, conseguimos separar apenas os caracteres que precisamos. Qualquer dúvida, use o comando ?str_sub no seu console para abrir a documentação.

Essa função recebe como parâmetro uma string, depois dois valores representando o começo e o final que queremos extrair dela. Criaremos duas variáveis, uma que chamaremos de tipo_idade referente ao primeiro elemento da string, e a segunda em relação ao restante da string, chamada idade. Confira o código a seguir que adicionaremos ao nosso mutate.

Na Prática!

Comando:

Saída:

Dentro do mutate() estamos criando várias variáveis de uma só vez. Primeiro, extraímos partes específicas da string IDADE: tipo_idade recebe apenas o primeiro dígito, e idade recebe os demais. Em seguida, usamos case_when() para transformar essa codificação em idade em anos.

No case_when(), cada linha segue a sintaxe abaixo:

Sintaxe
										
											# Estrutura de cada linha do case_when

											condição ˜ resultado
										
									

O símbolo ~ separa a condição (à esquerda) do valor que será atribuído quando ela for verdadeira (à direita). Assim:

  • Se tipo_idade <= 3, a idade representa horas, dias ou meses — por isso atribuimos 0 anos
  • Se tipo_idade == 4, a idade já está em anos, e apenas convertemos para número.
  • Se tipo_idade == 5, a idade representa pessoas com 100 anos ou mais — somamos 100 + idade.

Na Prática!

Comando:

Saída:

Dica

Use o comando View(df_csv) para visualizar a tabela completa em outra aba