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

如何在R中筛选日落至日出时段的tibble数据?

筛选日落至日出时段的夜间数据

当需要筛选日落至日出的夜间数据时,直接使用filter(sunset <= datetime, datetime <= sunrise)会返回空结果——原因是同一天的sunset时间(如20:38)晚于sunrise时间(如07:42),不存在同时满足datetime >= sunset且datetime <= sunrise的时间点。

夜间时段实际包含两个连续的部分:

  • 当日日落之后到当日23:59的时段
  • 次日00:00到次日日出之前的时段

针对你的数据集,我们可以用逻辑或来覆盖这两种情况:

library(dplyr)

# 筛选夜间数据:日落之后 或 日出之前
night_df <- df %>%
  filter(datetime >= sunset | datetime <= sunrise)

代码说明

这段代码会保留两类有效记录:

  1. datetime晚于当日日落时间的记录(对应当日夜间的后半段)
  2. datetime早于当日日出时间的记录(对应当日夜间的前半段,即前一天日落至当日日出的时段)

用你提供的示例数据测试,所有datetime为00:00-05:00的记录都会被保留,因为它们都早于当日07:42的日出时间,属于夜间时段。

注意事项

  • 确保datetime、sunrise、sunset三个字段的时区一致,否则会出现时间比较错误
  • 如果数据跨多天,这个逻辑依然适用,因为每条记录的sunrise和sunset都是对应日期的时间

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 09:45:25