如何使用data.table和lubridate包来达到预期的结果(创建一个新的日期列,它是另一个日期列的函数)?
下面是一些简单的代码,但不起作用:
library(data.table); library(lubridate);
dt <- data.table(date=ymd( paste0("2022-01-", 1:5) ) ); dt
date
<Date>
1: 2022-01-01
2: 2022-01-02
3: 2022-01-03
4: 2022-01-04
5: 2022-01-05
dt[, `Report date` := ymd(year(date)-5, month(date), day(date))]
Error in `[.data.table`(dt, , `:=`(`Report date`, ymd(year(date) - 5, :
Supplied 15 items to be assigned to 5 items of column 'Report date'. If you wish to 'recycle' the RHS please use rep() to make this intent clear to readers of your code.
In addition: Warning message:
All formats failed to parse. No formats found.
谢谢!
2条答案
按热度按时间polkgigr1#
另一种选择可以是:
lbsnaicq2#
ymd
需要单个字符串而不是3个部分,我们可能需要简单地使用paste
或者也可以使用
ISOdate
代替ymd
,ISOdate
可以接受多个参数以合并为datetime