我的x是2015年的第10周,而y是2015年的第20周。
x<-as.Date("201510", "%Y%U")
y<-as.Date("201520", "%Y%U")
我想知道x-y之间的周数差。 因此x-y应该为-10。当我尝试以下代码时,得到0或0。
interval(x, y) / weeks(1)
这给了我0
as.period(x- y, unit = "weeks")
这给了我0分。
我在这里想念什么?
答案 0 :(得分:2)
您不需要lubridate
。这是一个base R
选项:
## you need to define a week day to be able to compute the time interval
x <- as.Date("2015107", "%Y%U%u") # by appending 7 (and %u) to the string, we are taking the last day of the week (i.e. sunday)
y <- as.Date("2015207", "%Y%U%u")
## time interval
difftime(x, y, units = "weeks")
# Time difference of -10 weeks
as.numeric(difftime(x, y, units = "weeks"))
# [1] -10
答案 1 :(得分:1)
如果您确实想要lubridate
解决方案,请使用dweeks
代替weeks
。
x<-as.Date("2015107", "%Y%U%u") # using @ANG's edit to make the dates distinct
y<-as.Date("2015207", "%Y%U%u")
library(lubridate)
interval(y, x) / dweeks(1)
[1] -10