【发布时间】:2020-12-14 05:52:45
【问题描述】:
我有一个带日期的数据框,我只想知道最大日期:
dates <- data.frame( randomdate = c("30-11-2018", "25-10-2018", "10-12-2015", "10-01-2020", "15-2-2013", "17-8-1999") )
所以我将它们转换为日期格式:
dates$randomdate <- as.POSIXct(dates$randomdate,format = "%d-%m-%Y")
然后我要求创建一个包含最后日期的列:
dates$last_date= as.Date(max(dates$randomdate))
问题是我的数据集中的最后一个日期是 2020 年 1 月 10 日,而 max 函数只是发明了一个日期并给了我“2020 年 1 月 9 日”(这个日期甚至不在我的数据集中)
如果有人可以帮助我,也许我不明白 max 函数是如何工作的......
亲切的问候
【问题讨论】:
-
问题是您错误地使用
as.POSIXct转换为日期格式(警告应该是一个线索)。请改用as.Date。 -
谢谢,现在可以了。我没有任何警告,“as.Date”和“as.POSIXct”有什么区别?为什么每次都给我“前一天”?
-
抱歉,如果您像我一样省略“format =”,您会收到警告 :)
as.POSIXct用于操作日期时间对象,因此它使用时区。根据您的默认时区,您可能会获得与 UTC 日期不同的日期。as.Date用于处理日期对象。所以如果你只有日期(没有时间),最好使用as.Date。