Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R:循环和修改日期_R - Fatal编程技术网

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