如何添加缺失的日期并删除每小时时间序列中的重复日期。缺失日期用 NA 填充对应的降雨日期。
时间序列示例如
date Rainfall(mm)
1970-01-05 00:00:00 1.0
1970-01-05 01:00:00 1.0
1970-01-05 05:00:00 3.6
1970-01-05 06:00:00 3.6
1970-01-05 07:00:00 2.2
1970-01-05 08:00:00 2.2
1970-01-05 09:00:00 2.2
1970-01-05 10:00:00 2.2
1970-01-05 11:00:00 2.2
1970-01-05 13:00:00 2.2
1970-01-05 13:00:00 2.2
1970-01-05 13:00:00 2.2
最佳答案
您可以使用seq.POSIXt
的组合来创建一个没有丢失时间步长的data.frame
(对象grid。
),然后使用 merge
与我的示例中观察到的 df
结合起来。
这应该可以解决您的问题
# Create a sample data.frame missing every second observation.
df <- data.frame(date=seq.POSIXt(from=as.POSIXct("1970-01-01 00:00:00"), to=as.POSIXct("1970-01-01 10:00:00"), by="2 hours"), rainfall=rnorm(6))
#Create a seq of times without anything missing
grid. <- data.frame(date=seq.POSIXt(as.POSIXct("1970-01-01 00:00:00"), to=as.POSIXct("1970-01-01 10:00:00"), by="1 hours"))
# Merge them together keeping all the values from grid.
dat. <- merge(grid., df, by="date", all.x=TRUE)
要删除重复值,您可以查找它们并使用 duplicated
函数删除它们。
# The ! means the reverse logic. Therefore TRUE becomes FALSE.
dup_index <- !duplicated(dat.[,1])
# Now re-create the dat. object with only non-duplicated rows.
dat. <- dat.[dup_index,]
另一种方法是使用aggregate
函数。如果您有重复项,这实际上是两个不同的观察结果,因此您需要两者的平均值,则这可能很有用;
dat. <- aggregate(dat.[,2], by=list(dat[,1]), FUN=mean)
HTH
关于r - 如何添加缺失的日期并删除每小时时间序列中的重复日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11599341/