我需要在日期框架中创建一列,以说明每个观察值位于哪个日期范围内。
样本数据:
df <- data.frame(dt = as.POSIXct(c("2018-01-01 08:00:00", "2018-03-05 12:03:00", "2018-08-16 03:07:00")), dur = c(0, 24, 12), doo = c(3.22, 6.63, 7.13))
获取
| dt | dur | doo |
|---------------------|:---:|------|
| 2018-01-01 08:00:00 | 0 | 3.22 |
| 2018-03-05 12:03:00 | 24 | 6.63 |
| 2018-08-16 03:07:00 | 12 | 7.13 |
我已经为lubridate使用的“月”分配了时间间隔:
mo01 <- interval(ymd("2018-01-01"), ymd("2018-01-28"))
mo03 <- interval(ymd("2018-02-26"), ymd("2018-04-01"))
mo08 <- interval(ymd("2018-07-30"), ymd("2018-08-26"))
我想要去的是一张看起来像这样的桌子
| dt | dur | doo | mo |
|---------------------|:---:|------|----|
| 2018-01-01 08:00:00 | 0 | 3.22 |mo01|
| 2018-03-05 12:03:00 | 24 | 6.63 |mo03|
| 2018-08-16 03:07:00 | 12 | 7.13 |mo08|
当我运行了这样的东西(想想我每个月都要跑步)
for (a in df$dt){
if (a %within% mo01){
df$mo = "January"
}
}
我知道
Error in a %within% mo01 : Argument 1 is not a recognized date-time
df $ dt是“ POSIXct”,“ POSIXt”类
我真的很希望能够运行一段代码来查看dt中的所有日期,并根据观察值所在的日期范围填充mo列。