我使用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行。
我是数据表的新手,因此感谢您的帮助!
答案 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]