将给定时间与不同时间段匹配,然后返回R中的值

时间:2017-05-17 02:33:38

标签: r foreach

我在R中有一个包含3列的数据框:开始时间,结束时间和值

  start_time           end_time             value
 2017-01-03 00:00   2017-01-03 00:05         90
 2017-01-03 00:05   2017-01-03 00:10         89
 2017-01-03 00:10   2017-01-03 00:15         33
 2017-01-03 00:15   2017-01-03 00:20         55

另一个数据框是时间列表。对于列表中的每一次,如果时间在开始时间和结束时间之间,则返回值,如果不是返回NA。我有办法使用foreach函数吗?

1 个答案:

答案 0 :(得分:0)

您可以使用基本R cut.POSIXt()函数来完成此操作。如果您的时间向量是例如:

library(lubridate)
df2 <- ymd_hm(c("2017-01-02 00:00", "2017-01-03 00:02", "2017-01-03 00:04", "2017-01-03 00:12")) # note that first one is not included

break2 <- unique(c(df$start_time, df$end_time))

cut.POSIXt(df2, breaks = break2, labels = c(df$value), right = TRUE)

[1] <NA> 90   90   33

注意:

  1. 在这种情况下,您可以从数据框中轻松获取中断,因为您的间隔是互斥的。
  2. 在此示例中,间隔在右侧(right = TRUE
  3. 处关闭
  4. 在您的情况下,您没有定义两个区间包含的值会发生什么,例如:2017-01-03 00:05