【问题标题】:R setdiff function on vector of dates leads to strange results日期向量上的 R setdiff 函数导致奇怪的结果
【发布时间】:2017-01-13 09:29:26
【问题描述】:

我正在尝试使用以下代码获取日期之间所有工作日的向量:

days_of_month = seq(as.Date("2017-01-01"), as.Date("2017-01-31"), by="days")
sundays = c(as.Date("2017-01-01"), as.Date("2017-01-08"), as.Date("2017-01-15"), as.Date("2017-01-22"), as.Date("2017-01-29"))

当我这样做时:

working_days = setdiff(days_of_month, sundays)

setdiff的返回值是一个奇怪值的向量:

[1] 17168 17169 17170 17171 17172 17173 17175 17176 17177 17178 17179 17180
[13] 17182 17183 17184 17185 17186 17187 17189 17190 17191 17192 17193 17194
[25] 17196 17197

这些值是什么?以及如何获得days_of_month 中但不在sundays 中的日子的向量?

【问题讨论】:

  • 也许是as.Date(setdiff(days_of_month, sundays), origin = "1970-01-01")?你想修改向量,星期天。那是行不通的。
  • 这些奇怪的值只是自 1970-01-01 以来的天数(默认来源)。
  • days_of_month[!days_of_month %in% sundays]

标签: r date vector


【解决方案1】:

这些是 R S3 类日期的内部数值。您可以通过as.numeric(days_of_month) 看到数值。或者,您可以通过as.Date(working_days, origin="1970-01-01") 将结果转换为Date

【讨论】:

    猜你喜欢
    • 2022-11-01
    • 2010-11-14
    • 2018-06-28
    • 1970-01-01
    • 2018-01-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多