【问题标题】:R: Fill in missing values depending on hour and dayR:根据小时和天填写缺失值
【发布时间】:2019-12-14 09:47:14
【问题描述】:

我使用 R 并且有一个包含 3 列的数据表:

unixtime |按小时平均| 15秒值

数据包含一年中的几天以及这些日子的所有时间。 在 1 小时内,我有 1 个“按小时平均”的值,它位于这一小时的第一行。 此外,“15 秒值”有 240 个值。 我创建了一个 for 循环,它需要几个小时才能解决问题,但会解决它。

for (i in 2:nrow(merge_demand)){
  if (is.na(merge_demand[i,2])) {
    merge_demand[i,2] = merge_demand[i-1,2]
  }
}

有没有一种更有效的方法可以根据这一天的这一小时使用现有值填充“按小时平均”的 239 个缺失值? 我总共有 1682761 行。

我对数据表有点陌生,所以感谢您帮助我!

【问题讨论】:

标签: r datatable


【解决方案1】:

使用索引方法可能会更快。这是您需要合并到循环中的想法

# Generate sample data
my_data <- data.frame(unixtime = seq(from = ymd_hms('2000-01-01 00:00:15'),
                          by = '15 sec',
                          length.out = 240),
           average_by_hour = c(5, rep(NA, 239)),
           value_15_sec = c(rep(5/240, 240)))


#fill the first 240 values of average_by_hour with the first value
my_data$average_by_hour[1:240] <- my_data$average_by_hour[1]

【讨论】:

    猜你喜欢
    • 2021-12-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-18
    • 2018-05-02
    • 1970-01-01
    相关资源
    最近更新 更多