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

请求生成时间序列早间6:00-9:00时段NA值填充代码

仅填充每日6:00-9:00时段NA值的实现方案

针对每日6:00至9:00时段的NA值,用当日剩余时段的平均值填充,其余时段保持原样,可通过以下步骤实现:

步骤说明

  1. 从时间戳中提取日期和小时,用于按天分组和时段判断
  2. 按日期分组,计算当日非6:00-9:00时段的数值平均值(忽略该时段内的NA)
  3. 仅对6:00-9:00时段的NA值,替换为当日计算出的平均值

完整代码实现

# 加载所需包
library(dplyr)
library(lubridate)

# 生成示例数据
set.seed(3)
df <- data.frame( 
  timestamp = seq(as.POSIXct('2022-01-01', tz='utc'),
                  as.POSIXct('2022-01-10 23:00', tz='utc'), 
                  by = '1 hour'),
  value = runif(240)
)
df$value[runif(nrow(df)) < 0.3] <- NA

# 执行填充逻辑
df_filled <- df %>%
  mutate(
    date = as.Date(timestamp),
    hour = hour(timestamp)
  ) %>%
  group_by(date) %>%
  mutate(
    # 计算当日非6-9点时段的平均值
    daily_avg = mean(value[!hour %in% 6:9], na.rm = TRUE),
    # 仅填充6-9点的NA值
    value_filled = ifelse(hour %in% 6:9 & is.na(value), daily_avg, value)
  ) %>%
  ungroup() %>%
  # 移除辅助列(可选)
  select(-date, -hour, -daily_avg)

验证填充结果

可以通过以下代码查看原6-9点NA值的填充情况:

df_filled %>%
  filter(hour(timestamp) %in% 6:9 & is.na(df$value)) %>%
  select(timestamp, value, value_filled)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 09:15:49