在 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
转换为Date
class
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"
我将其他几个数据框合并在一起。但是,现在日期不再按时间顺序排列(见图)。如何根据 'Date' 列的值对数据框进行排序?
R dataframe output which I want to change
我首先尝试将 'Date' 列设置为索引,但由于 'Date' 列不仅具有唯一值,所以我不能。
每当我这样做时:
new_df <- new_df[order(new_df$Date),]
它只根据第一个值对日期进行排序。
此外,有时 'Date' 列有多个完全相同的值。每当 'Date' 列具有完全相同的值时,如何使索引相同?
应该是根据order
转换为Date
class
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"