【发布时间】:2017-10-31 14:04:06
【问题描述】:
我有以下 R 矩阵:
Date MyVal
2016 1
2017 2
2018 3
....
2026 10
我想要做的是“把它炸毁”,这样它就变成了这样(每月值是线性插值的):
Date MyVal
01/01/2016 1
02/01/2016 ..
....
01/01/2017 2
....
01/01/2026 10
我意识到我可以使用以下方法轻松生成序列:
DateVec <- seq(as.Date(paste(minYear,"/01/01", sep = "")), as.Date(paste(maxYear, "/01/01", sep = "")), by = "month")
我可以用它来制作一个大矩阵,然后在 DateVector 上使用 for 循环来填充内容,但我想知道是否有更优雅的 R 方法来做到这一点?
【问题讨论】:
-
看看
?merge -
如果您提供reproducible example 我可以查看解决方案。
-
检查下面的解决方案。同时,它需要根据数据集的确切结构进行一些修改(不是对最后一行,而是对数据帧准备部分)。
-
@HubertL 我很好奇如何使用
merge进行插值。这是one of my first questions here。我起初尝试使用zoo和merge,但最终使用approx(使用merge我得到的是重复的y 值而不是插值)。你会看看它,看看你是否可以用这种方法提供解决方案?会很乐意接受。此外,由于它们属于同一类别(时间序列插值),因此对这个问题也有帮助。 -
你说得对@Masoud,我错过了“插值”...... OP 的例子也是如此
标签: r date dataframe time-series interpolation