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 是一个合适的周数起点,然后每个星期日再添加一个周数。如果年份之间存在重叠,则给出相同的周数。
您好,我正在尝试查找三年内一系列日期的周数。但是 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 是一个合适的周数起点,然后每个星期日再添加一个周数。如果年份之间存在重叠,则给出相同的周数。