从R中的当前日期返回几个月的日期
请不要关闭此问题,因为它不是 我正在尝试将类型为从R中的当前日期返回几个月的日期,r,R,请不要关闭此问题,因为它不是 我正在尝试将类型为IDate的日期转换为mondate,然后再转换回IDate 在下面的代码中,我试图获取给定日期前6个月的日期date1,这是IDate对象 library(mondate) date1 = as.IDate("2020-02-10") date2 = as.IDate(mondate(date1)-6) 然而,我得到了警告 Warning message: Attempting to convert class 'IDate
IDate
的日期转换为mondate
,然后再转换回IDate
在下面的代码中,我试图获取给定日期前6个月的日期date1
,这是IDate对象
library(mondate)
date1 = as.IDate("2020-02-10")
date2 = as.IDate(mondate(date1)-6)
然而,我得到了警告
Warning message:
Attempting to convert class 'IDateDate' to 'mondate' via 'as.Date' then 'as.numeric'. Check results!
有人能告诉我如何纠正这个警告吗
解决方案-
正如Ronak在评论中所建议的-
date1%m-%months(6)
适用于IDate类。IDate
不是一种非常常见的日期类,因此mondate
返回一个警告,以检查结果并确保其正确性,因为它已在内部将IDate
转换为日期类
library(mondate)
mondate(date1) - 6
#mondate: timeunits="months"
#[1] 08/11/2019
library(lubridate)
date1 %m-% months(6)
#[1] "2019-08-10"
as.Date(date1) %m-% months(6)
#[1] "2019-08-10"
警告信息:
正在尝试通过“as.Date”和“as.numeric”将类“IDateDate”转换为“mondate”。检查结果
这是一个友好的警告,可以忽略。如果不希望警告显式转换为日期类
mondate(as.Date(date1)) - 6
#mondate: timeunits="months"
#[1] 08/11/2019
使用
lubridate
的%m-%
可以很好地处理IDate
以及日期类
library(mondate)
mondate(date1) - 6
#mondate: timeunits="months"
#[1] 08/11/2019
library(lubridate)
date1 %m-% months(6)
#[1] "2019-08-10"
as.Date(date1) %m-% months(6)
#[1] "2019-08-10"
使用
lubridate
可以执行date1%m-%months(6)
。在链接帖子中还有一个带有mondate
的选项。我正在使用mondate
库获取6个月前的日期,并在将其转换为IDate
时收到警告。我在这个问题的链接帖子中找不到任何帮助。date1%m-%months(6)
做得不错。谢谢