【问题标题】:R: Cut function with POSIXct dates: Creating specific categories based on time of dayR:带有 POSIXct 日期的剪切函数:根据一天中的时间创建特定类别
【发布时间】:2016-04-26 20:36:19
【问题描述】:

我有一小部分训练数据开始分析。该数据集由医院程序代码、所述程序的值和日期/时间戳组成。我试图将时间戳分解为“一天中的时间”类别,因为某些程序值会因早/晚而异。

我曾尝试使用cut(),但我似乎无法弄清楚如何输入类别的特定时间间隔(例如 00:00 到 06:00 = “禁食”,06:01- 10: 00 = "早餐", ...)。

任何帮助或指导将不胜感激。

【问题讨论】:

  • 提供您尝试过的代码示例
  • x_cut<- cut(x$servicedate, 4) 将数据细分为整个数据年份的四个分类区间。我希望按一天中的时间对程序值进行具体分类,而不是一年中的 4 个间隔。

标签: r cut posixct


【解决方案1】:

您可以使用 lubridate 包中的 hour 从日期中提取小时。

> library(lubridate)
> now()
[1] "2016-04-26 23:21:56 CEST"
> dt <- now()
> hour(dt)
[1] 23
> cut(hour(dt), breaks = c(0, 6, 12, 18, 24), include.lowest = TRUE)
[1] (18,24]
Levels: [0,6] (6,12] (12,18] (18,24]> 

【讨论】:

  • 不需要像这样的简单任务的包 - cut(as.integer(format(x, "%H")), seq(0,24,6), include.lowest=TRUE )
  • 当然,不需要使用 lubridate,但我认为它使代码更容易理解,并且避免了 as.integer 步骤
猜你喜欢
  • 1970-01-01
  • 2013-02-23
  • 1970-01-01
  • 2022-01-22
  • 1970-01-01
  • 2012-12-10
  • 2023-03-08
  • 1970-01-01
  • 2023-03-25
相关资源
最近更新 更多