This repository has been archived by the owner on May 13, 2022. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 10
/
Copy pathcreate-national-data.js
113 lines (107 loc) · 7.69 KB
/
create-national-data.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
const fs = require('fs');
const parseCsv = require('csv-parse/lib/sync');
const stringifyCsv = require('csv-stringify/lib/sync');
const {percentNationally} = require('./population.js');
const input = fs.readFileSync('./data/data.csv', 'utf8');
const records = parseCsv(input, {
columns: true,
});
const map = new Map(); // date => data
for (const record of records) {
const date = record.date;
delete record.state;
if (map.has(date)) {
const entry = map.get(date);
entry.totalDosesCumulative += Number(record.totalDosesCumulative);
entry.initialDosesCumulative += Number(record.initialDosesCumulative);
entry.initialDosesCumulativeBioNTech += Number(record.initialDosesCumulativeBioNTech);
entry.initialDosesCumulativeModerna += Number(record.initialDosesCumulativeModerna);
entry.initialDosesCumulativeAstraZeneca += Number(record.initialDosesCumulativeAstraZeneca);
entry.initialDosesCumulativeNovavax += Number(record.initialDosesCumulativeNovavax);
entry.finalDosesCumulative += Number(record.finalDosesCumulative);
entry.finalDosesCumulativeBioNTech += Number(record.finalDosesCumulativeBioNTech);
entry.finalDosesCumulativeModerna += Number(record.finalDosesCumulativeModerna);
entry.finalDosesCumulativeAstraZeneca += Number(record.finalDosesCumulativeAstraZeneca);
entry.finalDosesCumulativeNovavax += Number(record.finalDosesCumulativeNovavax);
entry.finalDosesCumulativeJohnsonAndJohnson += Number(record.finalDosesCumulativeJohnsonAndJohnson);
entry.boosterDosesCumulative += Number(record.boosterDosesCumulative);
entry.boosterDosesCumulativeBioNTech += Number(record.boosterDosesCumulativeBioNTech);
entry.boosterDosesCumulativeModerna += Number(record.boosterDosesCumulativeModerna);
entry.boosterDosesCumulativeJohnsonAndJohnson += Number(record.boosterDosesCumulativeJohnsonAndJohnson);
entry.onlyPartiallyVaccinatedCumulative += Number(record.onlyPartiallyVaccinatedCumulative);
//entry.onlyPartiallyVaccinatedPercent += 0;
entry.onlyPartiallyVaccinatedCumulativeBioNTech += Number(record.onlyPartiallyVaccinatedCumulativeBioNTech);
entry.onlyPartiallyVaccinatedCumulativeModerna += Number(record.onlyPartiallyVaccinatedCumulativeModerna);
entry.onlyPartiallyVaccinatedCumulativeAstraZeneca += Number(record.onlyPartiallyVaccinatedCumulativeAstraZeneca);
entry.atLeastPartiallyVaccinatedCumulative += Number(record.atLeastPartiallyVaccinatedCumulative);
//entry.atLeastPartiallyVaccinatedPercent += 0;
entry.atLeastPartiallyVaccinatedCumulativeBioNTech += Number(record.atLeastPartiallyVaccinatedCumulativeBioNTech);
entry.atLeastPartiallyVaccinatedCumulativeModerna += Number(record.atLeastPartiallyVaccinatedCumulativeModerna);
entry.atLeastPartiallyVaccinatedCumulativeAstraZeneca += Number(record.atLeastPartiallyVaccinatedCumulativeAstraZeneca);
entry.atLeastPartiallyVaccinatedCumulativeJohnsonAndJohnson += Number(record.atLeastPartiallyVaccinatedCumulativeJohnsonAndJohnson);
entry.fullyVaccinatedCumulative += Number(record.fullyVaccinatedCumulative);
//entry.fullyVaccinatedPercent += 0;
entry.fullyVaccinatedCumulativeBioNTech += Number(record.fullyVaccinatedCumulativeBioNTech);
entry.fullyVaccinatedCumulativeModerna += Number(record.fullyVaccinatedCumulativeModerna);
entry.fullyVaccinatedCumulativeAstraZeneca += Number(record.fullyVaccinatedCumulativeAstraZeneca);
entry.fullyVaccinatedCumulativeJohnsonAndJohnson += Number(record.fullyVaccinatedCumulativeJohnsonAndJohnson);
entry.boostedOnceCumulative += Number(record.boosterDosesCumulative),
//entry.boostedOncePercent += 0;
entry.boostedOnceCumulativeBioNTech += Number(record.boosterDosesCumulativeBioNTech);
entry.boostedOnceCumulativeModerna += Number(record.boosterDosesCumulativeModerna);
entry.boostedOnceCumulativeJohnsonAndJohnson += Number(record.boosterDosesCumulativeJohnsonAndJohnson);
} else {
map.set(date, {
date: date,
pubDate: record.pubDate,
totalDosesCumulative: Number(record.totalDosesCumulative),
initialDosesCumulative: Number(record.initialDosesCumulative),
initialDosesCumulativeBioNTech: Number(record.initialDosesCumulativeBioNTech),
initialDosesCumulativeModerna: Number(record.initialDosesCumulativeModerna),
initialDosesCumulativeAstraZeneca: Number(record.initialDosesCumulativeAstraZeneca),
initialDosesCumulativeNovavax: Number(record.initialDosesCumulativeNovavax),
finalDosesCumulative: Number(record.finalDosesCumulative),
finalDosesCumulativeBioNTech: Number(record.finalDosesCumulativeBioNTech),
finalDosesCumulativeModerna: Number(record.finalDosesCumulativeModerna),
finalDosesCumulativeAstraZeneca: Number(record.finalDosesCumulativeAstraZeneca),
finalDosesCumulativeNovavax: Number(record.finalDosesCumulativeNovavax),
finalDosesCumulativeJohnsonAndJohnson: Number(record.finalDosesCumulativeJohnsonAndJohnson),
boosterDosesCumulative: Number(record.boosterDosesCumulative),
boosterDosesCumulativeBioNTech: Number(record.boosterDosesCumulativeBioNTech),
boosterDosesCumulativeModerna: Number(record.boosterDosesCumulativeModerna),
boosterDosesCumulativeJohnsonAndJohnson: Number(record.boosterDosesCumulativeJohnsonAndJohnson),
onlyPartiallyVaccinatedCumulative: Number(record.onlyPartiallyVaccinatedCumulative),
onlyPartiallyVaccinatedPercent: -1,
onlyPartiallyVaccinatedCumulativeBioNTech: Number(record.onlyPartiallyVaccinatedCumulativeBioNTech),
onlyPartiallyVaccinatedCumulativeModerna: Number(record.onlyPartiallyVaccinatedCumulativeModerna),
onlyPartiallyVaccinatedCumulativeAstraZeneca: Number(record.onlyPartiallyVaccinatedCumulativeAstraZeneca),
atLeastPartiallyVaccinatedCumulative: Number(record.atLeastPartiallyVaccinatedCumulative),
atLeastPartiallyVaccinatedPercent: -1,
atLeastPartiallyVaccinatedCumulativeBioNTech: Number(record.atLeastPartiallyVaccinatedCumulativeBioNTech),
atLeastPartiallyVaccinatedCumulativeModerna: Number(record.atLeastPartiallyVaccinatedCumulativeModerna),
atLeastPartiallyVaccinatedCumulativeAstraZeneca: Number(record.atLeastPartiallyVaccinatedCumulativeAstraZeneca),
atLeastPartiallyVaccinatedCumulativeJohnsonAndJohnson: Number(record.atLeastPartiallyVaccinatedCumulativeJohnsonAndJohnson),
fullyVaccinatedCumulative: Number(record.fullyVaccinatedCumulative),
fullyVaccinatedPercent: -1,
fullyVaccinatedCumulativeBioNTech: Number(record.fullyVaccinatedCumulativeBioNTech),
fullyVaccinatedCumulativeModerna: Number(record.fullyVaccinatedCumulativeModerna),
fullyVaccinatedCumulativeAstraZeneca: Number(record.fullyVaccinatedCumulativeAstraZeneca),
fullyVaccinatedCumulativeJohnsonAndJohnson: Number(record.fullyVaccinatedCumulativeJohnsonAndJohnson),
boostedOnceCumulative: Number(record.boosterDosesCumulative),
boostedOncePercent: -1,
boostedOnceCumulativeBioNTech: Number(record.boosterDosesCumulativeBioNTech),
boostedOnceCumulativeModerna: Number(record.boosterDosesCumulativeModerna),
boostedOnceCumulativeJohnsonAndJohnson: Number(record.boosterDosesCumulativeJohnsonAndJohnson),
});
}
}
const newRecords = [];
for (const entry of map.values()) {
entry.onlyPartiallyVaccinatedPercent = percentNationally(entry.onlyPartiallyVaccinatedCumulative);
entry.atLeastPartiallyVaccinatedPercent = percentNationally(entry.atLeastPartiallyVaccinatedCumulative);
entry.fullyVaccinatedPercent = percentNationally(entry.fullyVaccinatedCumulative);
entry.boostedOncePercent = percentNationally(entry.boostedOnceCumulative);
newRecords.push(entry);
}
const csv = stringifyCsv(newRecords, { header: true }).trim();
fs.writeFileSync('./data/national-total.csv', `${csv}\n`);