如何在R中保留从最早日期算起的X个月

如何在R中保留从最早日期算起的X个月,r,R,我有一个数据表(dt),包含以下元素,一个项目的id,日期和当天的库存 ID date Stock 193sd 2016-03-23 12 238ds 2016-04-20 1 238ds 2017-07-20 1 238ds 2018-07-20 1 193sd 2017-09-12 1 193sd 2018-09-1

我有一个数据表(dt),包含以下元素,一个项目的id,日期和当天的库存

 ID        date             Stock
193sd      2016-03-23        12
238ds      2016-04-20         1
238ds      2017-07-20         1
238ds      2018-07-20         1
193sd      2017-09-12         1
193sd      2018-09-12         1
193sd      2018-03-12         1
193sd      2018-05-12         1
从最早的一天算起,要保留5个月,我会执行以下操作:

dt$date = as.Date(dt$date, origin="1899-12-30")

months5= aux[, .SD[date>= min(date) %m-% months(5)], by = ID]
ID        date             Stock
193sd      2016-03-23        12
238ds      2016-04-20         1
238ds      2017-07-20         1
238ds      2018-07-20         1
193sd      2017-09-12         1
193sd      2018-09-12         1
193sd      2018-03-12         1
193sd      2018-05-12         1
但结果表(months5)的值与超过5个月的值相同

请告诉我我在工作中做错了什么

更新!: 按照Gregor的建议运行以下代码

months5= dt[, .SD[date<= min(date) %m+% months(5)], by = ID]
    ID        date             Stock
    193sd      2016-03-23        12
    238ds      2016-04-20         1
    193sd      2018-05-12         1

months5=dt[,.SD[日期似乎您需要
%m+%
而不是
%m-%
。当然,所有的月份都在min date减去5个月之后。也许您需要
=
,从您的文本中,我不确定您是否要保留或删除min date前5个月的日期。这里是否缺少
调用?
库(lubridate);库(数据表)
两个都是绝对需要的。谢谢,Gregor。你的两个建议都是需要的。从来没有遇到过
%m-%或
%m+%`。看起来像是一门外语。我投票决定以打字错误结束。我想把
%m-%
改为
%m+%
,问题就完全解决了。可能还需要将
=
改为de>