r - 参考 POSIXct 格式时间区分高峰和非高峰流量时段
问题描述
在这里,我有一些在伦敦收集的每分钟浓度的空气污染浓度数据。这种污染物是与交通有关的空气污染物。我想添加另一个带有因子变量(Peak ; Off-Peak)的列,以区分在高峰时间(6:30 am-9:30 am)或非高峰时间(16:00 到 19: 00) 仅适用于周一至周五。当前时间列采用带有date+time的 POSIXct 格式。
问题 1:我应该执行以下操作: 1.删除周六和周日数据 2.从日期+时间中 提取时间 3.确定(上午 6:30 至上午 9:30)和(16:00 至 19)的时间范围: 00)
或者有一种方法可以使用日期+时间(POSIXct)来识别一天的时间范围
问题2:如何正确地从POSIXct格式的日期+时间变量中提取时间,可用于时间范围((6:30 am-9:30 am)和(16:00至19:00))识别?
解决方案
您可以使用chron包,因为它具有确定工作日的功能。它还具有节假日功能。lubridate包可用于从日期/时间变量中提取小时和分钟。
library(chron)
library(lubridate)
data %>%
mutate(peak = case_when(
is.weekend(as.Date(date)) ~ FALSE,
(hour(date)==6 & minute(date)>=30 | hour(date)>6) &
(hour(date)==9 & minute(date)<=30 | hour(date)<9) ~ TRUE,
TRUE ~ FALSE),
offpeak = case_when(
is.weekend(as.Date(date)) ~ FALSE,
(hour(date)>=16 & hour(date)<=19) ~ TRUE,
TRUE ~ FALSE)
)
date peak offpeak
1 1998-01-01 06:00:00 FALSE FALSE
2 1998-01-01 06:20:00 FALSE FALSE
3 1998-01-01 06:40:00 TRUE FALSE
4 1998-01-01 07:00:00 TRUE FALSE
5 1998-01-01 07:20:00 TRUE FALSE
6 1998-01-01 07:40:00 TRUE FALSE
7 1998-01-01 08:00:00 TRUE FALSE
8 1998-01-01 08:20:00 TRUE FALSE
9 1998-01-01 08:40:00 TRUE FALSE
10 1998-01-01 09:00:00 TRUE FALSE
11 1998-01-01 09:20:00 TRUE FALSE
12 1998-01-01 09:40:00 FALSE FALSE
13 1998-01-01 10:00:00 FALSE FALSE
30 1998-01-01 15:40:00 FALSE FALSE
31 1998-01-01 16:00:00 FALSE TRUE
32 1998-01-01 16:20:00 FALSE TRUE
33 1998-01-01 16:40:00 FALSE TRUE
34 1998-01-01 17:00:00 FALSE TRUE
35 1998-01-01 17:20:00 FALSE TRUE
36 1998-01-01 17:40:00 FALSE TRUE
37 1998-01-01 18:00:00 FALSE TRUE
38 1998-01-01 18:20:00 FALSE TRUE
39 1998-01-01 18:40:00 FALSE TRUE
40 1998-01-01 19:00:00 FALSE TRUE
41 1998-01-01 19:20:00 FALSE TRUE
42 1998-01-01 19:40:00 FALSE TRUE
43 1998-01-01 20:00:00 FALSE FALSE
资料:
data <- data.frame(date=seq.POSIXt(as.POSIXct("1998-01-01 06:00:00"),
as.POSIXct("1998-01-02 06:00:00"), by="20 min"))
推荐阅读
- node.js - DynamoDB:获取数组每个项目的属性
- jquery - 如何使用自定义 div 元素在 Jquery 中显示工具提示
- drools - Drools:如何比较两个列表中的属性的最佳实践
- c++ - 如何阻止函数的内存泄漏
- oop - API 或包装器不是应用程序的边界吗?
- python - 如何使用请求库自动化浏览器(不是硒导致性能)
- python-3.x - 输入必须在通过前至少 5 秒开启
- javascript - 打字稿道具可以是字符串数组或具有特定键的对象数组:值
- javascript - 单击(图像/按钮)将数据存储在 ... 以实时呈现另一个 html 模板
- http - EIdOSSLUnderlyingCryptoError - SSL3_GET_RECORD:错误的版本号(TLS 1.2)