R:循环和修改日期
假设我有一个不完整的数据框,其中日期(已四舍五入)表示利率变化(如果缺少行,则没有变化): 我想通过复制值来添加缺少的月份,如下所示:R:循环和修改日期,r,R,假设我有一个不完整的数据框,其中日期(已四舍五入)表示利率变化(如果缺少行,则没有变化): 我想通过复制值来添加缺少的月份,如下所示: Date i 1 2015-03-01 30.0 2 2015-02-01 19.5 3 2015-01-01 14.0 4 2014-12-01 14.0 5 2014-11-01 14.0 6 2014-10-01 12.5 当然,我可以将年和月分别提取为数值,并构建一个新的数据框架(代码看起来相当复杂)。但我相信一定有一些优雅的方式
Date i
1 2015-03-01 30.0
2 2015-02-01 19.5
3 2015-01-01 14.0
4 2014-12-01 14.0
5 2014-11-01 14.0
6 2014-10-01 12.5
当然,我可以将年和月分别提取为数值,并构建一个新的数据框架(代码看起来相当复杂)。但我相信一定有一些优雅的方式来做到这一点,也许通过某种方式循环日期,并为月份增加价值 需要采取两个步骤。首先,要通过合并插入所有缺少的行
DF2 <- merge(
data.frame(Date = seq(from = tail(DF$Date,1), to = DF$Date[1], by = "month")),
DF,
all.x = TRUE)
如果Date
列不属于Date
类,则上面的seq
命令将失败。在这种情况下,使用DF$Date
DF2 <- merge(
data.frame(Date = seq(from = tail(DF$Date,1), to = DF$Date[1], by = "month")),
DF,
all.x = TRUE)
library(zoo)
DF2$i <- na.locf(DF2$i)
Date i
1 2013-08-01 6.5
2 2013-09-01 6.5
3 2013-10-01 6.5
4 2013-11-01 6.5
5 2013-12-01 6.5
6 2014-01-01 6.5
7 2014-02-01 6.5
8 2014-03-01 6.5
9 2014-04-01 9.5
10 2014-05-01 9.5
11 2014-06-01 9.5
12 2014-07-01 9.5
13 2014-08-01 12.5
14 2014-09-01 12.5
15 2014-10-01 12.5
16 2014-11-01 14.0
17 2014-12-01 14.0
18 2015-01-01 14.0
19 2015-02-01 19.5
20 2015-03-01 30.0