【问题标题】:R find difference between 2 year-week objectsR找到2年一周对象之间的差异
【发布时间】:2018-01-27 12:44:40
【问题描述】:

我有 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# 之间的差异。

【问题讨论】:

  • 使用strftime 后,您没有“年-周”对象,而是有字符串。

标签: r datediff strftime


【解决方案1】:

直接在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

【讨论】:

    【解决方案2】:
    library(lubridate)
    dd1$date1 <- ymd(dd1$date1)
    dd1$date2 <- ymd(dd1$date2)
    interval_p = interval(dd1$date1, dd1$date2)
    weeks = interval_p %/% weeks(1) 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-06-27
      • 2020-01-20
      • 1970-01-01
      • 1970-01-01
      • 2022-01-04
      • 2023-01-07
      相关资源
      最近更新 更多