R - 使用c()向数据框添加日期返回数值

时间:2017-05-11 15:55:33

标签: r

当运行下面的代码意味着为每日时间序列(提前一天)创建结束日期时,我使用c()来组合移位的时间序列(当它自己运行时返回一个日期格式),指定的最后结束日期。但是,它不是将2017-05-09添加到它的末尾,而是返回一个数值,虽然正确移位但没什么用处。

从下面的例子中可以看出,它对于应该添加的最后一个日期也做了一些奇怪的事。

为什么会发生这种情况,我该如何解决?

as.Date(portsim$period)

periods <- data.frame(period = portsim$period)
periods$start <- periods$period
periods$end <- c(periods$start[-1], as.Date("2017-05-09"))   ##problematic line

> periods
         period      start   end
1    2011-08-12 2011-08-12     2
2    2011-08-15 2011-08-15     3
3    2011-08-16 2011-08-16     4
4    2011-08-17 2011-08-17     5
5    2011-08-18 2011-08-18     6
6    2011-08-19 2011-08-19     7
7    2011-08-22 2011-08-22     8
8    2011-08-23 2011-08-23     9
9    2011-08-24 2011-08-24    10
10   2011-08-25 2011-08-25    11
...
1432 2017-05-04 2017-05-04  1433
1433 2017-05-05 2017-05-05  1434
1434 2017-05-08 2017-05-08 17295

1 个答案:

答案 0 :(得分:2)

看起来您的日期实际上是字符或甚至是因素。请尝试str(periods)进行检查。

如果是,请用

替换第二行
periods$start <- as.Date(as.character(periods$period))