seq(first(as.Date(dat$updateTime)), last(as.Date(dat$updateTime)), by = "day")
代码解读:
dat是一个数据框,其中存在一列是updateTime,找到updateTime中的最大值和最小值,从而用seq(dateTime_1, dateTime_2, by= ‘’)的方式,构建一个连续的时间列(注意:不是ts类型的那种时间序列)。
seq用法详参:seq函数的时间用法 R document
出现报错如题:
Error in seq.int(0, to0 - from, by) : wrong sign in 'by' argument
经过查找,报错可能性有:
- 时间格式不对
R中默认的时间格式是:yyyy-mm-dd
(“2012-02-06”),若使用了格式为其他格式的时间,例如:dd-mm-yyyy
(“01-11-1979”),则会报错。
修正方法详参:Stackoverflow 中的同名问题 - 另外一种报错原因就很蛋疼了…(我遇到的情况)
在代码中,我使用了first, last函数,而由于我的date是倒序排列的,所以出现了一种情况是,我取出来的第一个数字是比最后一个数字要大的。这种报错原因约等于:
seq(as.Date('2020-04-21'),as.Date('2020-1-23'),by="day")
的报错原因。
将代码更改为:
seq(as.Date('2020-04-21'),as.Date('2020-1-23'),by="-1 day")
更改序列为递减序列,最后正常运行。
P.S: 写代码的时候脑子还是不能不清醒…祝大家debug顺利