r - 如何添加缺失的日期并删除每小时时间序列中的重复日期

标签 r time-series

如何添加缺失的日期并删除每小时时间序列中的重复日期。缺失日期用 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/

相关文章:

python - 在Python极坐标中将时间序列数据从一个df插值到另一个df的时间轴

algorithm - 用于选择时间序列前 X% 的在线/流式算法

r - 如何从 Shiny 的模块调用 Shiny 的模块?

python - Plotly:使用 Python 在多行图中添加色阶

r - 如何在 r 中拟合指数回归?(又名基数变化幂)

r - 在 ggplot2 中创建一个二类分级圆?

用于自动回归 (AR)、ARIMA、时间序列分析的 Java API

r - 使用 R 中的计算机视觉在嘈杂数据中查找矩形

r - 查找 R 中所有闭节点集

r - 填充 R data.frame 中每行中缺失的元素