Skip to content

Instantly share code, notes, and snippets.

@USMortality
Last active December 10, 2024 08:05
Show Gist options
  • Save USMortality/733b36125b0f0212999a5fd976cea0d5 to your computer and use it in GitHub Desktop.
Save USMortality/733b36125b0f0212999a5fd976cea0d5 to your computer and use it in GitHub Desktop.
PEI Impfnebenwirkungen [Germany]
library(dplyr)
library(readxl)
url <- paste0(
"https://www.pei.de/SharedDocs/Downloads/DE/newsroom/dossiers/rohdaten-",
"sicherheitsberichte/download-xls-uaw-daten-2020-12-27-bis-2023-12-31",
".xlsx?__blob=publicationFile&v=5"
)
tempfile_path <- tempfile(fileext = ".xlsx")
download.file(url, tempfile_path, mode = "wb") # Use mode = "wb" for binary files
df <- read_xlsx(tempfile_path, skip = 1) |>
setNames(c(
"id", "year", "age_group", "sex", "vaxx_date", "manufacturer", "charge",
"date_adverse", "adverse_event"
)) |>
mutate(
year = as.integer(year),
vaxx_date = as.Date(vaxx_date, tryFormats = c("%d.%m.%Y")),
date_adverse = case_when(
date_adverse == "--.--.----" ~ NA, # Handle missing dates explicitly
TRUE ~ as.Date(date_adverse, format = "%d.%m.%Y") # Parse valid dates
),
sex = case_when(
sex == "männlich" ~ "m",
sex == "weiblich" ~ "w",
TRUE ~ "other"
),
age_group = case_when(
age_group == "18 - 59 Jahre" ~ "18-59",
age_group == "60 Jahre und älter" ~ "60+",
age_group == "leer" ~ "unknown",
age_group == "7 - 17 Jahre" ~ "7-17",
age_group == "k.A." ~ NA,
age_group == "2 - 6 Jahre" ~ "2-6",
age_group == "0 - 23 Monate" ~ "<2",
age_group == "12 - 17 Jahre" ~ "12-17",
age_group == "7 - 11 Jahre" ~ "7-11",
TRUE ~ "other" # Catch any undefined cases
),
manufacturer = case_when(
grepl("Comirnaty", manufacturer, ignore.case = TRUE) ~ "Pfizer/BioNTech",
grepl("Spikevax", manufacturer, ignore.case = TRUE) ~ "Moderna",
grepl("Jcovden", manufacturer, ignore.case = TRUE) ~ "Johnson & Johnson",
grepl("Vaxzevria", manufacturer, ignore.case = TRUE) ~ "AstraZeneca",
grepl("Corona Impfstoff", manufacturer, ignore.case = TRUE) ~ NA,
grepl("Nuvaxovid", manufacturer, ignore.case = TRUE) ~ "Novavax",
grepl("Valneva", manufacturer, ignore.case = TRUE) ~ "Valneva",
TRUE ~ NA
)
)
# write.csv(df, "/Users/ben/Downloads/germany_pei_vae.csv", row.names = FALSE)
# By Manufacturer
df |>
group_by(manufacturer) |>
summarize(n = n()) |>
arrange(desc(n))
# By Cause
df |>
filter(adverse_event %in% c(
"Tod",
"Ploetzlicher Tod",
"Herztod",
"Hirntod",
"Ploetzlicher Herztod",
"Fetaler Tod",
"Tod eines fruehgeborenen Babys",
"Fetaler Tod"
)) |>
group_by(adverse_event) |>
summarize(n = n()) |>
arrange(adverse_event, n)
# Min/Max By Charge
a <- df |> filter(charge == "FE6975")
min(a$vaxx_date, na.rm = TRUE)
max(a$vaxx_date, na.rm = TRUE)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment