Skip to content

Instantly share code, notes, and snippets.

@Tadge-Analytics
Created June 17, 2020 23:54
Show Gist options
  • Save Tadge-Analytics/0a375db0dea67f1fffbf9847a80f5df7 to your computer and use it in GitHub Desktop.
Save Tadge-Analytics/0a375db0dea67f1fffbf9847a80f5df7 to your computer and use it in GitHub Desktop.
library(tidyverse)
###################################################################
# create some dummy data
today <- tibble(Cases = seq(1, 5000, by = 50))
###################################################################
# your original method
today$Cases_fake <-ifelse(today$Cases < 20, sqrt(today$Cases * 70)*1000,
ifelse(today$Cases < 50, sqrt(today$Cases * 90)*1000,
ifelse(today$Cases < 100, sqrt(today$Cases*30)*1000,
ifelse(today$Cases < 500, sqrt(today$Cases*20)*700,
ifelse(today$Cases < 1000, sqrt(today$Cases*15)*700,
ifelse(today$Cases < 2000, sqrt(today$Cases*10)*700,
sqrt(today$Cases*5)*700))))))
###################################################################
# dplyr mutate and case_When method
today <- today %>%
mutate(case_when_method = case_when(Cases < 20 ~ sqrt(Cases * 70)*1000,
Cases < 50 ~ sqrt(Cases * 90)*1000,
Cases < 100 ~ sqrt(Cases * 30)*1000,
Cases < 500 ~ sqrt(Cases * 20)*700,
Cases < 1000 ~ sqrt(Cases * 15)*700,
Cases < 2000 ~ sqrt(Cases * 10)*700,
TRUE ~ sqrt(Cases * 5)*700))
###################################################################
# even simpler... via a formular
today <- today %>%
mutate(formula_method = log(Cases)*10000 + 1000)
###################################################################
today %>%
ggplot() +
aes(x = Cases) +
geom_line(aes(y = Cases_fake), col = "blue") +
geom_line(aes(y = case_when_method), col = "red") +
geom_line(aes(y = formula_method), col = "red")
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment