当运行下面的代码意味着为每日时间序列(提前一天)创建结束日期时,我使用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
答案 0 :(得分:2)
看起来您的日期实际上是字符或甚至是因素。请尝试str(periods)
进行检查。
如果是,请用
替换第二行periods$start <- as.Date(as.character(periods$period))