R 没有给出正确的周数

R is not giving the correct week number

您好,我正在尝试查找三年内一系列日期的周数。但是 R 没有给出正确的周数。我正在生成从 2016-04-01 到 2019-03-30 的日期序列,然后我试图计算三年中的周数,以便我得到周数 54、55、56 等等。

然而,当我检查 2016-04-03 周时,R 显示周数为 14,而当与 excel 交叉检查时,它是第 15 周,而且它只是计算 7 天而不是参考实际日历天数。此外,周数从 1 开始,每年开始

代码如下所示

days <- seq(as.Date("2016-04-03"),as.Date("2019-03-30"),'days')
weekdays <- data.frame('days'=days, Month = month(days), week = week(days),nweek = rep(1,length(days)))

结果是这样的

   days    week
2016-04-01  14
2016-04-02  14
2016-04-03  14
2016-04-04  14
2016-04-05  14
2016-04-06  14
2016-04-07  14
2016-04-08  15
2016-04-09  15
2016-04-10  15
2016-04-11  15
2016-04-12  15

然而,当从 excel 检查时,这就是我得到的

   days    week
2016-04-01  14
2016-04-02  14
2016-04-03  15
2016-04-04  15
2016-04-05  15
2016-04-06  15
2016-04-07  15
2016-04-08  15
2016-04-09  15
2016-04-10  16
2016-04-11  16
2016-04-12  16

谁能帮我找出哪里出错了。

提前致谢!!

不是你做错了什么本身,只是 R 的方式不同(我假设你使用的是 lubridate 包)和Excel 计算周数。

  • R会根据当年1月1日起的7天区块计算周数;但是
  • Excel 根据从星期日开始的一周计算周数。

以2016年1月的前几天为例。在 2016 年 1 月 1 日星期五,R 和 Excel 都会说这是第 1 周。

2016 年 1 月 3 日星期日:

  • 这是在年初的前 7 天内,因此 R 将 return 第 1 周;但是
  • 今天是星期天,所以 Excel 滴答到第 2 周。

试试这个:

ifelse(test = weekdays.Date(days[1]) == "Sunday", yes = epiweek(days[1]), no = epiweek(days[1]) + 1) + cumsum(weekdays.Date(days) == "Sunday")

这会测试第一天是否是星期日,并且 return 是一个合适的周数起点,然后每个星期日再添加一个周数。如果年份之间存在重叠,则给出相同的周数。