如何在 Power BI 中添加 Epi Week 又称 MMWR Week 列

如何在 Power BI 中添加 Epi Week 又称 MMWR Week 列

我的数据集有一个日期列。我需要为每一行分配正确的 Epi Week/MMWR Week。我无法手动完成,因为数据集跨越五年,有超过 18,000 行。

Power Query 函数 Date.WeekOfYear 没有为 MMWR 周分配正确的周数。

MMWR 周指南如下关注

任何 MMWR 周的第一天都是星期日。MMWR 周数按顺序从 1 开始,每周递增,最大为 52 或 53。MMWR 年度的 MMWR 第 1 周是日历年中至少有四天的第一周。例如,如果 1 月 1 日是星期日、星期一、星期二或星期三,则包含 1 月 1 日的日历周将是 MMWR 第 1 周。如果 1 月 1 日是星期四、星期五或星期六,则包含 1 月 1 日的日历周将是上一年的最后一个 MMWR 周(第 52 周或第 53 周)。由于此规则,12 月 29 日、30 日和 31 日可能会成为下一个 MMWR 年度的 MMWR 第 1 周。

答案1

与 MMWR 进行核对WEEKNUM(date;1)(参考下文),结果似乎偏离了 1(即比预期高 1);
指定1星期从星期日开始。

这可能是最接近的;可能通过使用进行调整WEEKNUM(date;1)-1
(注意:一年的头几天可能为 0)

参考:
https://help.libreoffice.org/7.3/en-US/text/scalc/01/func_weeknum.html?&DbPAR=SHARED&System=UNIX

希望有一天,每个人都能使用 ISO 8601 格式。唉

参考 MMWR:
https://ibis.health.state.nm.us/resource/MMWRWeekCalendar.html

答案2

我首先在 R 中创建一个 epiweek 日历表,然后将该表导入我的 Power BI 报告并在我的 epiweek 表中的日期列和我的数据集中的日期列之间建立关系,从而解决了这个问题。

以下是 R 代码:

library(lubridate)
library(tidyverse)
library(writexl)
daterange <- seq(ymd("2018-01-01"),ymd("2024-12-31"), by = "days")
epiweek_table <- as_tibble(daterange) %>% 
  rename(date = value) %>% 
  mutate(epiweek = epiweek(date))
write_xlsx(epiweek_table, "epiweek_table.xlsx", col_names = TRUE)

相关内容