R找出2周年对象之间的差异

时间:2017-08-18 18:50:00

标签: r datediff strftime

我有2个年份#对象。我想找到两周之间的差异。

dd1 <- data.frame(date1 = as.Date('2015-01-01') + 1:31
                    , date2 = as.Date('2016-03-01') + 1:31
                    )
dd1$wk1 <- strftime(dd1$date1, format = '%Y-%W')
dd1$wk2 <- strftime(dd1$date2, format = '%Y-%W')

dd1$week_diff <- difftime(dd1$wk1, dd1$wk2)

Error in as.POSIXlt.character(x, tz, ...) : 
  character string is not in a standard unambiguous format

有什么建议吗?

注意:我不能使用原始日期,因为我的数据由于聚合而不包含它们,所以它必须是year_week#的差异。

2 个答案:

答案 0 :(得分:4)

直接在date1date2上计算周数差异,而不将其转换为字符。

dd1$week_diff <- difftime(dd1$date1, dd1$date2, units = "weeks")

head(dd1)
       date1      date2       week_diff
1 2015-01-02 2016-03-02 -60.71429 weeks
2 2015-01-03 2016-03-03 -60.71429 weeks
3 2015-01-04 2016-03-04 -60.71429 weeks
4 2015-01-05 2016-03-05 -60.71429 weeks
5 2015-01-06 2016-03-06 -60.71429 weeks
6 2015-01-07 2016-03-07 -60.71429 weeks

答案 1 :(得分:1)

library(lubridate)
dd1$date1 <- ymd(dd1$date1)
dd1$date2 <- ymd(dd1$date2)
interval_p = interval(dd1$date1, dd1$date2)
weeks = interval_p %/% weeks(1)