我正在尝试使用as.Date
相对于任何origin
或基准日期来计算星期偏移量。例如。:
bd = as.Date("2013-12-29")
ad1 = as.Date("2014-01-01")
ad1w = as.numeric(strftime(ad1, format = "%W"))
ad2 = as.Date("2015-04-20")
ad2w = as.numeric(strftime(ad2, format = "%W"))
给出:
ad1w = 0
,ad2w = 16
。我希望ad1w
和ad2w
不是0和16,而是一个偏移量为bd
的数字。可能吗?原点可以是任何日期。谢谢!要澄清一点。比方说:
bd = as.Date("2013-12-25")
ad1 = as.Date("2015-01-07")
ad2 = as.Date("2015-01-06")
即
bd
是2013年的第51周,ad1
和ad2
都是2015年的第1周。两者的抵销应为54周(无舍入)。 最佳答案
这样就足够了吗?
ad1w <- as.numeric(floor((ad1 - bd) /7))
ad2w <- as.numeric(floor((ad2 - bd) /7))
更新资料
使用
lubridate
您可以使用:library(lubridate)
ad1w <- as.numeric(floor((ad1-lubridate::wday(ad1) - (bd-lubridate::wday(bd))) /7))
ad2w <- as.numeric(floor((ad2-lubridate::wday(ad2) - (bd-lubridate::wday(bd))) /7))
逻辑如下。将每个日期重新编码为上周的最后一个日期,然后使用
as.numeric(floor((recoded_ad1 - recoded_bd) /7))
关于r - 多年来连续的一周过渡,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29800880/