Arrumar Dados de Carga Viral da DISA

Abrir o RStudio e carregar os pacotes

Se ainda não o fez, abra uma nova sessão de trabalho no RStudio. Como habitualmente, começaremos o nosso trabalho criando um novo script R (File -> New File -> R script). Também vamos carregar os principais pacotes R necessários para arrumar os dados tabulares do DISA. O Tidyverse é o nosso fiel e polivalente “canivete suíço” de programação de ciência de dados em R. O pacote sismar permite-nos arrumar os dados exportados dos sistemas de informação de saúde do MISAU, incluindo o DISA. O pacote glue permite-nos combinar e utilizar valores de cadeia de caracteres no código.

library(tidyverse)
library(sismar)
library(glue)

Definir variáveis globais

Antes de processarmos os nossos dados de carga viral DISA, vamos definir alguns valores no ambiente global do R para que possamos mais tarde passá-los para a nossa função sismar. Primeiro, defina um valor para o caminho para a exportação .xlsx da carga viral DISA do OpenLDR guardada na sua máquina local. Defina um segundo valor para o mês da exportação da carga viral DISA do sistema OpenLDR.

Tenha em atenção que a data do mês tem de ser definida no formato %Y-%m-%d (“YYYY-MM-DD”). Embora não existam restrições quanto à definição do dia exato da cadeia de datas, é melhor ser consistente se estiver a arrumar e a compilar envios ao longo de vários meses. Por exemplo, se estivermos a definir o dia como “01” no nosso processamento dos dados DISA de maio, também o devemos definir como “01” no nosso processamento de junho.

path_disa_cv <- "Data/Relatorio Mensal de Carga Viral Junho 2024.xlsx"
month_input <- "2024-06-20"

path_disa_cv
#> [1] "Data/Relatorio Mensal de Carga Viral Junho 2024.xlsx"
month_input
#> [1] "2024-06-20"

Arrumar os dados mensais de carga viral DISA

Acredita que já fizemos o trabalho árduo de processar o nosso conjunto mensal de dados de carga viral DISA? Tudo o que precisamos de fazer agora é escrever uma única linha de código para chamar a função process_disa_cv do sismar com os argumentos que já definimos no nosso ambiente global e temos os nossos dados de carga viral prontos para análise!

df <- process_disa_cv(path_disa_cv)

Gravar dados mensais no disco

É provável que queira gravar o seu conjunto de dados mensais processados no disco. Isto será útil se (ou melhor, “quando”) decidir analisar vários meses de dados DISA em conjunto. Podemos guardar ficheiros .csv para o disco facilmente usando write_csv do pacote Tidyverse readr. Tudo o que fazemos é chamar write_csv e passar o nosso objeto de dados “df” juntamente com a informação de ligação ao ficheiro (localização e nome do .csv que guardamos no disco).

É de notar que no trecho de código abaixo também conseguimos aplicar um truque útil! Usámos o pacote glue para acrescentar automaticamente um sufixo de período ao nome do ficheiro .csv que guardámos! Isto irá garantir que todos os meses não substituímos os ficheiros dos meses anteriores e que acabamos com um conjunto completo de ficheiros mensais com um nome único para compilar em conjunto! É inteligente a forma como podemos incorporar funções noutras funções para as tornar mais poderosas, não é?!

write_csv(df, file = glue("Data/processed/disa_vl_{month_input}")

Compilar dados mensais

Para juntar os nossos ficheiros mensais guardados, vamos aumentar o nível de dificuldade utilizando uma expressão regular R e chamando uma função purrr do Tidyverse chamada “map” que nos ajuda a iterar tarefas (neste caso, a tarefa de ler um ficheiro .csv). No final do trecho de código, usaremos a função “reduce” para juntar os nossos ficheiros .csv.

A linha de código mais opaca do trecho começa com “list.files”. É aqui que pedimos efetivamente ao R para fazer um inventário dos nomes completos dos ficheiros na pasta onde guardámos os nossos dados DISA processados mensalmente. O argumento “pattern” permite-nos colocar parâmetros à volta do que inventariamos. O símbolo “^” seguido de “disa_vl_” garante que apenas os ficheiros que começam por “disa_vl_” serão incluídos no nosso conjunto de dados compilado.

df_compiled <-
  list.files("Data/processed/", pattern = "^disa_vl_", full.names = TRUE) %>%
  map(~ read_csv(.x)) %>%
  reduce(rbind)

Celebre (e analise) o seu trabalho!

Fizemos um bom trabalho aqui, por isso, reserve um momento para dar uma palmadinha nas costas! No entanto, não dê palmadinhas por muito tempo, porque agora começa o trabalho ainda mais divertido de explorar os dados e gerar percepções! Boa análise!


Disclaimer: The findings, interpretation, and conclusions expressed herein are those of the authors and do not necessarily reflect the views of United States Agency for International Development. All errors remain our own.