R:根据小时和日期填写缺失值

时间:2019-12-14 09:47:14

标签: r datatable

我使用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行。

我是数据表的新手,因此感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

使用索引方法可能更快。这是您需要将其纳入循环的想法

# 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]