Módulo 1 | Aula 2
Introdução à Linguagem de Programação
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:
- Converter a variável DTOBITO para o formato de data usando ymd().
- 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:
Use o comando View(df_csv) para visualizar a tabela completa em outra aba