【问题标题】:Match given time with different time period then return the value in R将给定时间与不同时间段匹配,然后返回 R 中的值
【发布时间】:2017-05-17 02:33:38
【问题描述】:

我在 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 函数来做到这一点?

【问题讨论】:

标签: r foreach


【解决方案1】:

您可以使用基本 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. 在您的情况下,您没有定义两个间隔包含的值会发生什么,例如:2017-01-03 00:05

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-12
    • 1970-01-01
    • 1970-01-01
    • 2013-11-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多