您好,我试图找到三年内一系列日期的星期数。但是,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
有人可以帮我找出我要去哪里的错误吗。
非常感谢!
答案 0 :(得分:8)
您做错的本身没什么,R(我假设您使用的是lubridate
包)和Excel计算周数的方式只是有所不同。
以2016年1月的前几天为例。在2016年1月1日,星期五,R和Excel都会说这是第1周。
2016年1月3日,星期日:
尝试一下:
ifelse(test = weekdays.Date(days[1]) == "Sunday", yes = epiweek(days[1]), no = epiweek(days[1]) + 1) + cumsum(weekdays.Date(days) == "Sunday")
这将测试第一天是否为星期日,并返回适当的星期数起始点,然后在每个星期日再加上一个星期数。如果年份之间有重叠,则给出相同的星期数。