You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何判断POSIXct类型时间是否早于指定时间(下午5点)

解决方案

要实现对POSIXct/POSIXt类型的Depart列判断是否早于下午5点并生成标记列,你需要修正原代码中直接使用5pm的错误(R无法识别该格式),以下是两种可行方法:

方法1:提取小时数判断

借助lubridate包的hour()函数提取时间的小时部分,和17(下午5点对应的24小时制数值)比较:

library(dplyr)
library(lubridate)

time_flag_df <- my_df %>% 
  mutate(my_column = case_when(
    hour(Depart) < 17 ~ "Y",
    TRUE ~ ""  # 不符合条件的行可返回空字符串或"N",按需修改
  ))

方法2:构造当日下午5点的时间对象

将Depart的日期部分与"17:00:00"拼接成完整的POSIXct对象,再进行时间比较:

library(dplyr)

time_flag_df <- my_df %>% 
  mutate(
    daily_5pm = as.POSIXct(paste(as.Date(Depart), "17:00:00")),
    my_column = case_when(
      Depart < daily_5pm ~ "Y",
      TRUE ~ ""
    )
  ) %>%
  select(-daily_5pm)  # 可选,删除临时生成的daily_5pm列

关键说明

  • case_when()需要覆盖所有行的情况,因此必须添加TRUE ~ ...分支处理不满足条件的记录
  • 原代码未闭合括号,修正后的代码补充了完整的括号结构

内容的提问来源于stack exchange,提问作者marcelklib

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 10:25:34