检查日期是否在范围

时间:2015-12-16 10:59:59

标签: r

我有一个包含开始日期和结束日期(加上时间)的列。

然后我会有31个单独的列,如果开始日期和结束日期包含列中的日期,则每月包含1或0的一列。

我已使用strptime将日期值转换为日期。我知道如何使用difftime

我坚持的位实际上正在进行比较,并检查开始日期是在列日期之前还是之后。例如我想知道开始和结束日期是否包括1月1日,然后是1月2日......如果开始日期是5日,我应该为这2列返回0但我不知道如何进行比较。

添加了一些示例数据

  • Col 1开课日期:01/01/2015 17:00:00
  • Col 2结束日期:14/01/2015 10:55:00
  • Col 3 Jan-01:1
  • Col 3 Jan-02:1

所以在第3栏中,我想检查开始和结束日期是否包含1月1日。

开始日期可以是1月1日的某个时间点,例如下午4点。如果是这种情况,我希望第3列返回0.5天。

  • Col 1开始日期:01/01/2015 00:00:00
  • Col 2结束日期:01/01/2015 16:00:00
  • Col 3 Jan-01:0.6667
  • Col 3 Jan-02:0

希望现在更清楚了。我认为有时间而不仅仅是返回布尔结果的复杂性意味着这不是一个重复的问题。

1 个答案:

答案 0 :(得分:1)

由于您没有提供任何可复制的日期,我创建它只是为了说明两个日期的比较,并在1其他TRUE时给出0

既然你提到strptime我在这里使用相同的内容。

Syntax: ifelse(date1 < date2, 1,0)


> ifelse(strptime(as.Date("2015-12-16"), format = "%Y-%m-%d") < strptime(as.Date("2015-12-17"), format = "%Y-%m-%d"),1,0)
[1] 1

> ifelse(strptime(as.Date("2015-12-18"), format = "%Y-%m-%d") < strptime(as.Date("2015-12-17"), format = "%Y-%m-%d"),1,0)
[1] 0

您可以使用相同的逻辑来比较两个日期。