“问题”;“最大值”;带R的函数和日期

“问题”;“最大值”;带R的函数和日期,r,max,lubridate,R,Max,Lubridate,我有一个带有日期的数据框,我只想知道最大日期: dates对数据进行排序并获取最后一行 dates$randomdate <- as.Date(dates$randomdate,format = "%d-%m-%Y") dates <- data.frame(randomdate=dates[order(as.Date(dates$randomdate, format="%Y/%m/%d")),]) dates[nrow(dates),] &g

我有一个带有日期的数据框,我只想知道最大日期:


dates对数据进行排序并获取最后一行

dates$randomdate <- as.Date(dates$randomdate,format = "%d-%m-%Y")
dates <- data.frame(randomdate=dates[order(as.Date(dates$randomdate, format="%Y/%m/%d")),])
dates[nrow(dates),]
> dates[nrow(dates),]
[1] "2020-01-10"

dates$randomdate如评论和其他答案中所述,您应该使用
As.Date
转换为日期,因为您有日期。但是,之所以将最大日期设置为“2020年1月9日”,是因为
as.POSIXct
将对象转换为本地时区,而
as.date
使用“UTC”时区

您可以在两个函数中使用相同的时区来解析它

dates$randomdate <- as.POSIXct(dates$randomdate,format = '%d-%m-%Y', tz = 'UTC')
dates$last_date <- max(as.Date(dates$randomdate))

dates$randomdate问题是您不正确地使用了
as.POSIXct
转换为日期格式(警告应该是一个线索)。改用
作为.Date
。谢谢,它现在可以工作了。我没有任何警告,“as.Date”和“as.POSIXct”有什么区别?为什么每次都给我“前一天”的提示?对不起,如果省略“format=”like I do:)
as,你会收到警告。POSIXct
用于操作日期时间对象,因此它使用时区。根据您的默认时区,您可能会获得与UTC日期不同的日期<代码>as.Date
用于处理日期对象。因此,如果您只有日期(没有时间),最好将
用作.Date