Skip to content

Instantly share code, notes, and snippets.

@cynthiahqy
Created January 13, 2024 03:56
Show Gist options
  • Save cynthiahqy/fbbdeff61372c5bda80277eacaf62100 to your computer and use it in GitHub Desktop.
Save cynthiahqy/fbbdeff61372c5bda80277eacaf62100 to your computer and use it in GitHub Desktop.
create 2024 date table for notion import
# code to generate csv file of dates to import into notion database
library(tibble)
library(dplyr)
library(lubridate)
library(stringr)
df_2024 <- tibble(
ymd = seq(as.Date("2024-01-01"), as.Date("2024-12-31"), by = "days")
) |>
## these three mutate calls do the same thing in different ways
mutate(wday_md = paste0(
wday(ymd, label = TRUE), ", ",
month(ymd, label = TRUE), " ",
str_pad(day(ymd), width = 2, pad = "0")
)) |>
mutate(wday_glue = glue::glue(
"{wday(ymd, label = TRUE)}, \\
{month(ymd, label = TRUE)} \\
{str_pad(day(ymd), 2, pad = '0')}"
)) |>
mutate(wday_format = format(ymd, "%a, %b %d")) |>
## week returns no of complete seven day periods since Jan 1
## might need to use isoweek() instead for years not beginning on a Monday
mutate(week_no = week(ymd)) |>
## generate week number labels with start-end dates e.g. W01: Jan 01-07
group_by(week_no) |>
mutate(
week_start = min(ymd),
week_end = max(ymd),
same_month = identical(
month(week_start),
month(week_end)
)
) |>
mutate(week_dates = if_else(same_month,
glue::glue(
"{format(week_start, '%b %d')}-{format(week_end, '%d')}"
),
glue::glue(
"{format(week_start, '%b %d')}-{format(week_end, '%b %d')}"
)
)) |>
mutate(week_glue = glue::glue(
"W{str_pad(week_no, 2, pad = '0')}: {week_dates}"
)) |>
ungroup()
## export only the columns needed
export_2024 <-
transmute(df_2024,
name = wday_format,
date = format(ymd, "%Y-%m-%d"),
week = week_glue
)
## write to csv, then import into notion
export_2024 |>
write.csv(here::here("day_2024.csv"), row.names = FALSE)
@cynthiahqy
Copy link
Author

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment