R COVID-19

Pandemia do novo coronavírus no Brasil e no mundo

Introdução

Nesta seção são vistos scripts, desenvolvidos utilizando a Linguagem R, que geram gráficos relativos à pandemia de COVID-19 no Brasil e no mundo.

Dados

Para gerar os gráficos foram utilizados dados do Painel Coronavírus, do Ministério da Saúde, da Johns Hopkins University Center for Systems Science and Engineering (JHU CCSE), baixados da página Novel Coronavirus (COVID-19) Cases Data, da HDX - HUMANITARIAN DATA EXCHANGE, e do European Centre for Disease Prevention and Control, até que este último parou de atualizar os dados diários em 14 de dezembro de 1020.

Banco de Dados MariaDB

Os dados do Painel Coronavírus podem ser carregados no sistema gerenciador banco de dados relacional (SGBDR) MariaDB, e serem acessados pelos scripts escritos em R.

Para armazenar os dados do Painel Coronavírus no banco de dados foi criada a tabela:

CREATE TABLE `HIST_PAINEL_COVIDBR` (
  `regiao` varchar(64) DEFAULT NULL,
  `estado` varchar(2) DEFAULT NULL,
  `municipio` varchar(64) DEFAULT NULL,
  `coduf` varchar(2) DEFAULT NULL,
  `codmun` varchar(24) DEFAULT NULL,
  `codRegiaoSaude` varchar(5) DEFAULT NULL,
  `nomeRegiaoSaude` varchar(64) DEFAULT NULL,
  `data` date DEFAULT NULL,
  `semanaEpi` decimal(12,0) DEFAULT 0,
  `populacaoTCU2019` decimal(12,0) DEFAULT 0,
  `casosAcumulados` decimal(12,0) DEFAULT 0,
  `casosNovos` decimal(12,0) DEFAULT 0,
  `obitosAcumulados` decimal(12,0) DEFAULT 0,
  `obitosNovos` decimal(12,0) DEFAULT 0,
  `Recuperadosnovos` decimal(12,0) DEFAULT 0,
  `emAcompanhamentoNovos` decimal(12,0) DEFAULT 0,
  `indIntMet` varchar(1) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

Para carregar os dados do arquivo baixado na tabela do banco de dados é usado o script:

TRUNCATE TABLE `HIST_PAINEL_COVIDBR`;

LOAD DATA LOCAL
	INFILE 'caminho/HIST_PAINEL_COVIDBR_ddmmmaaaa.csv'
	INTO TABLE `HIST_PAINEL_COVIDBR`
	FIELDS TERMINATED BY ';'
	OPTIONALLY ENCLOSED BY '\"'
	LINES TERMINATED BY '\r\n'
	IGNORE 1 LINES
	(`regiao`, `estado`, `municipio`,
	 `coduf`, `codmun`, `codRegiaoSaude`,
	 `nomeRegiaoSaude`, @data, `semanaEpi`,
	 @populacaoTCU2019, `casosAcumulados`, `casosNovos`,
	 `obitosAcumulados`, `obitosNovos`,
	 @Recuperadosnovos, @emAcompanhamentoNovos, @indIntMet)
	SET
	data = STR_TO_DATE(@data, '%Y-%m-%d'),
	populacaoTCU2019 = IF(@populacaoTCU2019 = '', 0, @populacaoTCU2019),
	Recuperadosnovos = IF(@Recuperadosnovos = '', 0, @Recuperadosnovos),
	emAcompanhamentoNovos = IF(@emAcompanhamentoNovos = '', 0, @emAcompanhamentoNovos),
	indIntMet = TRIM(@indIntMet);

SHOW WARNINGS;
Banco de Dados SQLite

Também pode ser usado o motor de banco de dados SQLite para armazenar os dados do Painel Coronavírus no banco de dados, conforme visto abaixo:

$ sqlite3 HIST_PAINEL_COVIDBR.db
SQLite version 3.34.0 2020-12-01 16:14:00
Enter ".help" for usage hints.
sqlite> CREATE TABLE IF NOT EXISTS "HIST_PAINEL_COVIDBR"(
   ...>   "regiao" TEXT,
   ...>   "estado" TEXT,
   ...>   "municipio" TEXT,
   ...>   "coduf" TEXT,
   ...>   "codmun" TEXT,
   ...>   "codRegiaoSaude" TEXT,
   ...>   "nomeRegiaoSaude" TEXT,
   ...>   "data" DATE,
   ...>   "semanaEpi" INTEGER,
   ...>   "populacaoTCU2019" INTEGER,
   ...>   "casosAcumulado" INTEGER,
   ...>   "casosNovos" INTEGER,
   ...>   "obitosAcumulado" INTEGER,
   ...>   "obitosNovos" INTEGER,
   ...>   "Recuperadosnovos" INTEGER,
   ...>   "emAcompanhamentoNovos" INTEGER,
   ...>   "indIntMet" TEXT
   ...> );
sqlite> .separator ";"
sqlite> .import HIST_PAINEL_COVIDBR_13fev2021.csv HIST_PAINEL_COVIDBR --skip 1
sqlite> .tables
HIST_PAINEL_COVIDBR
sqlite> .fullschema
CREATE TABLE IF NOT EXISTS "HIST_PAINEL_COVIDBR"(
  "regiao" TEXT,
  "estado" TEXT,
  "municipio" TEXT,
  "coduf" TEXT,
  "codmun" TEXT,
  "codRegiaoSaude" TEXT,
  "nomeRegiaoSaude" TEXT,
  "data" DATE,
  "semanaEpi" INTEGER,
  "populacaoTCU2019" INTEGER,
  "casosAcumulado" INTEGER,
  "casosNovos" INTEGER,
  "obitosAcumulado" INTEGER,
  "obitosNovos" INTEGER,
  "Recuperadosnovos" INTEGER,
  "emAcompanhamentoNovos" INTEGER,
  "indIntMet" TEXT
);
/* No STAT tables available */
sqlite> SELECT COUNT(*) FROM HIST_PAINEL_COVIDBR;
3642852
sqlite> SELECT * FROM HIST_PAINEL_COVIDBR limit 5;
Brasil;;;76;;;;2020-02-25;9;210147125;0;0;0;0;;;
Brasil;;;76;;;;2020-02-26;9;210147125;1;1;0;0;;;
Brasil;;;76;;;;2020-02-27;9;210147125;1;0;0;0;;;
Brasil;;;76;;;;2020-02-28;9;210147125;1;0;0;0;;;
Brasil;;;76;;;;2020-02-29;9;210147125;2;1;0;0;;;
sqlite> .mode column
sqlite> SELECT * FROM HIST_PAINEL_COVIDBR limit 5;
regiao  estado  municipio  coduf  codmun  codRegiaoSaude  nomeRegiaoSaude  data        semanaEpi  populacaoTCU2019  casosAcumulado  casosNovos  obitosAcumulado  obitosNovos  Recuperadosnovos  emAcompanhamentoNovos  indIntMet
------  ------  ---------  -----  ------  --------------  ---------------  ----------  ---------  ----------------  --------------  ----------  ---------------  -----------  ----------------  ---------------------  ---------
Brasil                     76                                              2020-02-25  9          210147125         0               0           0                0                                                              
Brasil                     76                                              2020-02-26  9          210147125         1               1           0                0                                                              
Brasil                     76                                              2020-02-27  9          210147125         1               0           0                0                                                              
Brasil                     76                                              2020-02-28  9          210147125         1               0           0                0                                                              
Brasil                     76                                              2020-02-29  9          210147125         2               1           0                0                                                              
sqlite> .exit

O banco de dados pode ser acessado por um script R, conforme mostrado abaixo:

# Biblioteca
library(DBI)

# Conectar ao banco de dados
con <- DBI::dbConnect(RSQLite::SQLite(),
      "~/R/dados/HIST_PAINEL_COVIDBR.db")

# Consulta
qry <- "SELECT COUNT(*) FROM HIST_PAINEL_COVIDBR"

rs <- dbSendQuery(con, qry)
row <- dbFetch(rs, n = -1)
dbHasCompleted(rs)
dbClearResult(rs)

# Desconectar do banco de dados
dbDisconnect(con)

# Mostrar o resultado
print(row)
Arquivos auxiliares
Arquivo estado_capital.csv
"estado","municipio"
AC,Rio Branco
AL,Maceió
AM,Manaus
AP,Macapá
BA,Salvador
CE,Fortaleza
DF,Brasília
ES,Vitória
GO,Goiânia
MA,São Luís
MG,Belo Horizonte
MS,Campo Grande
MT,Cuiabá
PA,Belém
PB,João Pessoa
PE,Recife
PI,Teresina
PR,Curitiba
RJ,Rio de Janeiro
RN,Natal
RO,Porto Velho
RR,Boa Vista
RS,Porto Alegre
SC,Florianópolis
SE,Aracaju
SP,São Paulo
TO,Palmas