如何在R中保留从最早日期算起的X个月
我有一个数据表(dt),包含以下元素,一个项目的id,日期和当天的库存如何在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
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>