【发布时间】:2020-08-24 05:36:42
【问题描述】:
我有一个包含 DateTime 列和一些其他变量的数据框。下面是一个例子:
library(lubridate)
df <- tibble(DateTime = ymd_hms(c("2020-04-06 10:00:00",
"2020-04-07 12:30:00",
"2020-04-07 14:31:00",
"2020-05-05 17:00:00")),
Var1 = c(1,2,3,4),
var2= c("a","b","c","d"))
df
# A tibble: 4 x 3
DateTime Var1 var2
<dttm> <dbl> <chr>
1 2020-04-06 10:00:00 1 a
2 2020-04-07 12:30:00 2 b
3 2020-04-07 14:31:00 3 c
4 2020-05-05 17:00:00 4 d
我想过滤行,使其返回一个数据帧,其中 DateTime 中的时间元素介于:
09:15:00 至 12:00:00 或
13:15:00 至 16:30:00 或
- 17:15:00 至 01:00:00。
这样它会返回以下数据框:
# A tibble: 2 x 3
DateTime Var1 var2
<dttm> <dbl> <chr>
1 2020-04-06 10:00:00 1 a
2 2020-04-07 14:31:00 3 c
我知道我可以做DateTime >= hms("09:15:00") & DateTime <= hms("12:00:00") 等等,但这似乎太复杂了。有没有更简单的方法?
【问题讨论】:
-
我没有看到你的逻辑在做你想做的事。例如,
df$DateTime < hms("12:00:00")全部为假。 -
你可以试试
cutting它(有一个“POSIXt”方法),但我认为这同样复杂。
标签: r datetime time filter subset