首页 > 解决方案 > 在R数据框中使用日期和时间对列进行排序

问题描述

我将其他几个数据框合并在一起。然而,现在日期不再按时间顺序排列(见图)。如何根据“日期”列的值对数据框进行排序?

我要更改的 R 数据帧输出

我首先尝试将“日期”列设置为索引,但由于“日期”列不仅具有唯一值,我不能。

每当我这样做时:

new_df <- new_df[order(new_df$Date),]

它仅根据日期的第一个值对日期进行排序。

除此之外,有时“日期”列有多个完全相同的值。每当“日期”列具有完全相同的值时,如何使索引相同?

标签: rdatetime

解决方案


order应该基于转换为Date

new_df$Date1 <- as.Date(new_df$Date, "%A, %d %b %Y, %H:%M")

如果我们想在排序中也保留时间部分,请使用as.POSIXct

new_df$Date1 <- as.POSIXct(new_df$Date,format =  "%A, %d %b %Y, %H:%M")

然后做

new_df <- new_df[order(new_df$Date1),]

如果我们想创建一个时间序列对象,请使用xts

library(xts)
xts(new_df["Income"], order.by = new_df$Date1)

作为一个可重现的例子

> str1 <- "Saturday, 12 Apr 2014, 18:00"
> as.Date(str1, "%A, %d %b %Y, %H:%M")
[1] "2014-04-12"
> as.POSIXct(str1, format = "%A, %d %b %Y, %H:%M")
[1] "2014-04-12 18:00:00 EDT"

推荐阅读