在 R 数据框中用日期和时间对列进行排序

Sort column with date and time in R dataframe

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

R dataframe output which I want to change

我首先尝试将 'Date' 列设置为索引,但由于 'Date' 列不仅具有唯一值,所以我不能。

每当我这样做时:

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

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

此外,有时 'Date' 列有多个完全相同的值。每当 'Date' 列具有完全相同的值时,如何使索引相同?

应该是根据order转换为Dateclass

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"